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]>

Reply via email to