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]