costin 2002/06/07 16:45:30
Modified: jk/native2/common jk_logger_file.c
jk/native2/server/apache13 mod_jk2.c
jk/native2/server/apache2 jk_logger_apache2.c mod_jk2.c
jk/native2/server/isapi jk_isapi_plugin.c
Log:
If APR is available, use it to avoid some ugly vprintf/buf ugliness.
Use APR pools if apr is available - there is no point in using the old
jk pools if we use APR. Right now the only use of the jk_pool remains
apache1.3 when built without APR ( to get around some aledged problems
when the binary version of apr won't work with single-threaded apache ).
This is also supposed to resolve the crash reported by JFC.
Revision Changes Path
1.24 +47 -1 jakarta-tomcat-connectors/jk/native2/common/jk_logger_file.c
Index: jk_logger_file.c
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_logger_file.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- jk_logger_file.c 28 May 2002 22:44:50 -0000 1.23
+++ jk_logger_file.c 7 Jun 2002 23:45:30 -0000 1.24
@@ -59,7 +59,7 @@
* Description: Utility functions (mainly configuration) *
* Author: Gal Shachor <[EMAIL PROTECTED]> *
* Author: Henri Gomez <[EMAIL PROTECTED]> *
- * Version: $Revision: 1.23 $ *
+ * Version: $Revision: 1.24 $ *
***************************************************************************/
#include "jk_env.h"
@@ -210,6 +210,51 @@
return JK_OK;
}
+#ifdef HAS_APR
+
+static int JK_METHOD jk2_logger_file_jkVLog(jk_env_t *env, jk_logger_t *l,
+ const char *file,
+ int line,
+ int level,
+ const char *fmt,
+ va_list args)
+{
+ int rc = 0;
+ char *buf;
+ char *fmt1;
+ apr_pool_t *aprPool=env->tmpPool->_private;
+ char rfctime[APR_RFC822_DATE_LEN];
+ apr_time_t time = apr_time_now();
+
+ if( !file || !args) {
+ return -1;
+ }
+
+ if(l->logger_private==NULL ||
+ l->level <= level) {
+ char *f = (char *)(file + strlen(file) - 1);
+
+ while(f != file && '\\' != *f && '/' != *f) {
+ f--;
+ }
+ if(f != file) {
+ f++;
+ }
+
+ /* XXX or apr_ctime ? */
+ apr_rfc822_date( rfctime, time );
+ fmt1=apr_pvsprintf( aprPool, "[%s] [%s:%d] %s", rfctime, file, line, fmt );
+ buf=apr_pvsprintf( aprPool, fmt, args );
+
+ l->log(env, l, level, buf);
+
+ }
+
+ return rc;
+}
+
+
+#else
static int JK_METHOD jk2_logger_file_jkVLog(jk_env_t *env, jk_logger_t *l,
const char *file,
@@ -284,6 +329,7 @@
return rc;
}
+#endif
static int jk2_logger_file_jkLog(jk_env_t *env, jk_logger_t *l,
1.15 +12 -2 jakarta-tomcat-connectors/jk/native2/server/apache13/mod_jk2.c
Index: mod_jk2.c
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/server/apache13/mod_jk2.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- mod_jk2.c 24 May 2002 07:12:32 -0000 1.14
+++ mod_jk2.c 7 Jun 2002 23:45:30 -0000 1.15
@@ -59,7 +59,7 @@
* Description: Apache 1.3 plugin for Jakarta/Tomcat *
* Author: Gal Shachor <[EMAIL PROTECTED]> *
* Henri Gomez <[EMAIL PROTECTED]> *
- * Version: $Revision: 1.14 $ *
+ * Version: $Revision: 1.15 $ *
***************************************************************************/
/*
@@ -130,6 +130,10 @@
return NULL;
}
+#ifdef HAS_APR
+apr_pool_t *jk_globalPool;
+#endif
+
/* Create the initial set of objects. You need to cut&paste this and
adapt to your server.
*/
@@ -139,11 +143,17 @@
jk_pool_t *globalPool;
jk_bean_t *jkb;
+#ifdef HAS_APR
+ apr_pool_create( &jk_globalPool, NULL );
+
+ jk2_pool_apr_create( NULL, &globalPool, NULL, jk_globalPool );
+#else
/** First create a pool. We use the default ( jk ) pool impl,
* other choices are apr or native.
*/
jk2_pool_create( NULL, &globalPool, NULL, 2048 );
-
+#endif
+
/** Create the global environment. This will register the default
factories, to be overriten later.
*/
1.25 +8 -18
jakarta-tomcat-connectors/jk/native2/server/apache2/jk_logger_apache2.c
Index: jk_logger_apache2.c
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-connectors/jk/native2/server/apache2/jk_logger_apache2.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- jk_logger_apache2.c 5 Jun 2002 19:25:39 -0000 1.24
+++ jk_logger_apache2.c 7 Jun 2002 23:45:30 -0000 1.25
@@ -108,17 +108,16 @@
{
/* XXX map jk level to apache level */
server_rec *s=(server_rec *)l->logger_private;
+ /* If we use apache2 logger, we should also use APR pools.
+ It is possible to do some workarounds, but it would be stupid, especially
+ since the idea is to use apr pools long term, with the old jk_pool as
+ a workaround for apache13 and where apr is not available */
+ apr_pool_t *aprPool=env->tmpPool->_private;
int rc;
+ char *buf;
/* XXX XXX Change this to "SMALLSTACK" or something, I don't think it's
netware specific */
-#ifdef NETWARE
-/* On NetWare, this can get called on a thread that has a limited stack so */
-/* we will allocate and free the temporary buffer in this function */
- char *buf;
-#else
- char buf[HUGE_BUFFER_SIZE];
-#endif
if( level < l->level )
return JK_OK;
@@ -126,15 +125,9 @@
if( s==NULL ) {
return JK_ERR;
}
+
+ buf=apr_pvsprintf( aprPool, fmt, args );
-#if defined(NETWARE) /* until we get a vsnprintf function */
- /* XXX Can we use a pool ? */
- /* XXX It'll go away with env and per thread data !! */
- buf = (char *) malloc(HUGE_BUFFER_SIZE);
- rc = vsprintf(buf, fmt, args);
-#else
- rc = vsnprintf(buf, HUGE_BUFFER_SIZE, fmt, args);
-#endif
rc=strlen( buf );
/* Remove trailing \n. XXX need to change the log() to not include \n */
if( buf[rc-1] == '\n' )
@@ -148,9 +141,6 @@
ap_log_error( file, line, APLOG_ERR | APLOG_NOERRNO, 0, s, buf);
}
-#ifdef NETWARE
- free(buf);
-#endif
return rc ;
}
1.34 +1 -7 jakarta-tomcat-connectors/jk/native2/server/apache2/mod_jk2.c
Index: mod_jk2.c
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/server/apache2/mod_jk2.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- mod_jk2.c 5 Jun 2002 19:25:39 -0000 1.33
+++ mod_jk2.c 7 Jun 2002 23:45:30 -0000 1.34
@@ -59,7 +59,7 @@
* Description: Apache 2 plugin for Jakarta/Tomcat *
* Author: Gal Shachor <[EMAIL PROTECTED]> *
* Henri Gomez <[EMAIL PROTECTED]> *
- * Version: $Revision: 1.33 $ *
+ * Version: $Revision: 1.34 $ *
***************************************************************************/
/*
@@ -259,13 +259,7 @@
jk_pool_t *globalPool;
jk_bean_t *jkb;
- /** First create a pool. Compile time option
- */
-#ifdef NO_APACHE_POOL
- jk2_pool_create( NULL, &globalPool, NULL, 2048 );
-#else
jk2_pool_apr_create( NULL, &globalPool, NULL, p );
-#endif
/** Create the global environment. This will register the default
factories
1.26 +6 -6
jakarta-tomcat-connectors/jk/native2/server/isapi/jk_isapi_plugin.c
Index: jk_isapi_plugin.c
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-connectors/jk/native2/server/isapi/jk_isapi_plugin.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- jk_isapi_plugin.c 5 Jun 2002 21:40:09 -0000 1.25
+++ jk_isapi_plugin.c 7 Jun 2002 23:45:30 -0000 1.26
@@ -60,7 +60,7 @@
* Author: Gal Shachor <[EMAIL PROTECTED]> *
* Author: Larry Isaacs <[EMAIL PROTECTED]> *
* Author: Ignacio J. Ortega <[EMAIL PROTECTED]> *
- * Version: $Revision: 1.25 $ *
+ * Version: $Revision: 1.26 $ *
***************************************************************************/
// This define is needed to include wincrypt,h, needed to get client certificates
@@ -698,21 +698,21 @@
return JK_TRUE;
}
+apr_pool_t *jk_globalPool;
/** Basic initialization for jk2.
*/
-
-
static jk_env_t* jk2_create_workerEnv (void) {
jk_logger_t *l;
jk_pool_t *globalPool;
jk_bean_t *jkb;
jk_env_t *env;
- /** First create a pool. Compile time option
- */
- jk2_pool_create( NULL, &globalPool, NULL, 2048 );
+
+ apr_pool_create( &jk_globalPool, NULL );
+
+ jk2_pool_apr_create( NULL, &globalPool, NULL, jk_globalPool );
/** Create the global environment. This will register the default
factories
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>