mturk       2005/02/14 01:45:58

  Modified:    jk/native/apache-1.3 mod_jk.c
  Log:
  Add shared memory support.
  
  Revision  Changes    Path
  1.66      +44 -3     jakarta-tomcat-connectors/jk/native/apache-1.3/mod_jk.c
  
  Index: mod_jk.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/apache-1.3/mod_jk.c,v
  retrieving revision 1.65
  retrieving revision 1.66
  diff -u -r1.65 -r1.66
  --- mod_jk.c  13 Feb 2005 12:23:46 -0000      1.65
  +++ mod_jk.c  14 Feb 2005 09:45:58 -0000      1.66
  @@ -57,6 +57,7 @@
   #include "jk_service.h"
   #include "jk_worker.h"
   #include "jk_uri_worker_map.h"
  +#include "jk_shm.h"
   
   #define JK_WORKER_ID        ("jakarta.worker")
   #define JK_HANDLER          ("jakarta-servlet")
  @@ -170,6 +171,7 @@
   
   static jk_logger_t *main_log = NULL;
   static jk_worker_env_t worker_env;
  +static char *jk_shm_file = NULL;
   
   static int JK_METHOD ws_start_response(jk_ws_service_t *s,
                                          int status,
  @@ -824,6 +826,32 @@
   }
   
   /*
  + * JkShmFile Directive Handling
  + *
  + * JkShmFile file
  + */
  +
  +static const char *jk_set_shm_file(cmd_parms * cmd,
  +                                   void *dummy, char *shm_file)
  +{
  +
  +    /* we need an absolut path */
  +    jk_shm_file = ap_server_root_relative(cmd->pool, shm_file);
  +
  +#ifdef CHROOTED_APACHE
  +    ap_server_strip_chroot(jk_shm_file, 0);
  +#endif
  +
  +    if (jk_shm_file == shm_file)
  +        jk_shm_file = ap_pstrdup(cmd->pool, shm_file);
  +
  +    if (jk_shm_file == NULL)
  +        return "JkShmFile file_name invalid";
  +
  +    return NULL;
  +}
  +
  +/*
    * JkLogLevel Directive Handling
    *
    * JkLogLevel debug/info/request/error/emerg
  @@ -1503,6 +1531,8 @@
        */
       {"JkLogFile", jk_set_log_file, NULL, RSRC_CONF, TAKE1,
        "Full path to the Jakarta mod_jk module log file"},
  +    {"JkShmFile", jk_set_shm_file, NULL, RSRC_CONF, TAKE1,
  +     "Full path to the Jakarta mod_jk module shared memory file"},
       {"JkLogLevel", jk_set_log_level, NULL, RSRC_CONF, TAKE1,
        "The Jakarta mod_jk module log level, can be debug, info, request, 
error, or emerg"},
       {"JkLogStampFormat", jk_set_log_fmt, NULL, RSRC_CONF, TAKE1,
  @@ -1840,6 +1870,7 @@
   
   static void jk_init(server_rec * s, ap_pool * p)
   {
  +    int rc;
       jk_server_conf_t *conf =
           (jk_server_conf_t *) ap_get_module_config(s->module_config,
                                                     &jk_module);
  @@ -1859,7 +1890,16 @@
               main_log = conf->log;
           }
       }
  -
  +    
  +    if ((rc = jk_shm_open(jk_shm_file, conf->log)) == 0) {
  +        if (JK_IS_DEBUG_LEVEL(conf->log))
  +            jk_log(conf->log, JK_LOG_DEBUG, "Initialized shm:%s",
  +                   jk_shm_name(), rc);
  +    }
  +    else
  +        jk_log(conf->log, JK_LOG_ERROR, "Initializing shm:%s errno=%d",
  +               jk_shm_name(), rc);
  + 
       /* SREVILAK -- register cleanup handler to clear resources on restart,
        * to make sure log file gets closed in the parent process  */
       ap_register_cleanup(p, s, jk_server_cleanup, ap_null_cleanup);
  @@ -1875,7 +1915,7 @@
   }
   */
   
  -    /* Create mapping from uri's to workers, and start up all the workers */
  +     /* Create mapping from uri's to workers, and start up all the workers */
       if (!uri_worker_map_alloc
           (&(conf->uw_map), conf->uri_to_context, conf->log)) {
           jk_error_exit(APLOG_MARK, APLOG_EMERG, s, p, "Memory error");
  @@ -2102,6 +2142,7 @@
   static void jk_server_cleanup(void *data)
   {
       jk_generic_cleanup((server_rec *) data);
  +    jk_shm_close();
   }
   
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to