You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by rj...@apache.org on 2007/09/30 23:30:49 UTC
svn commit: r580793 - in /tomcat/connectors/trunk/jk/native:
apache-1.3/mod_jk.c apache-2.0/mod_jk.c
Author: rjung
Date: Sun Sep 30 14:30:49 2007
New Revision: 580793
URL: http://svn.apache.org/viewvc?rev=580793&view=rev
Log:
Remove worker_properties and worker_file from per server config.
They are global.
Do not allow multiple JkWorkerFile directives.
Modified:
tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c
tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c
Modified: tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c?rev=580793&r1=580792&r2=580793&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c (original)
+++ tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c Sun Sep 30 14:30:49 2007
@@ -128,10 +128,8 @@
jk_logger_t *log;
/*
- * Worker stuff
+ * Mount stuff
*/
- jk_map_t *worker_properties;
- char *worker_file;
char *mount_file;
int mount_file_reload;
jk_map_t *uri_to_context;
@@ -156,7 +154,7 @@
/*
* Setting target worker via environment
*/
- char *worker_indicator;
+ char *worker_indicator;
/*
* SSL Support
@@ -220,6 +218,11 @@
static jk_worker_env_t worker_env;
static char *jk_shm_file = NULL;
static size_t jk_shm_size = JK_SHM_DEF_SIZE;
+/*
+ * Worker stuff
+*/
+static jk_map_t *jk_worker_properties = NULL;
+static char *jk_worker_file = NULL;
static int JK_METHOD ws_start_response(jk_ws_service_t *s,
int status,
@@ -915,27 +918,25 @@
static const char *jk_set_worker_file(cmd_parms * cmd,
void *dummy, char *worker_file)
{
- server_rec *s = cmd->server;
struct stat statbuf;
- jk_server_conf_t *conf =
- (jk_server_conf_t *) ap_get_module_config(s->module_config,
- &jk_module);
+ if (jk_worker_file != NULL)
+ return "JkWorkersFile only allowed once";
/* we need an absolute path */
- conf->worker_file = ap_server_root_relative(cmd->pool, worker_file);
+ jk_worker_file = ap_server_root_relative(cmd->pool, worker_file);
#ifdef CHROOTED_APACHE
- ap_server_strip_chroot(conf->worker_file, 0);
+ ap_server_strip_chroot(jk_worker_file, 0);
#endif
- if (conf->worker_file == worker_file)
- conf->worker_file = ap_pstrdup(cmd->pool, worker_file);
+ if (jk_worker_file == worker_file)
+ jk_worker_file = ap_pstrdup(cmd->pool, worker_file);
- if (conf->worker_file == NULL)
+ if (jk_worker_file == NULL)
return "JkWorkersFile file name invalid";
- if (stat(conf->worker_file, &statbuf) == -1)
+ if (stat(jk_worker_file, &statbuf) == -1)
return "Can't find the workers file specified";
return NULL;
@@ -1795,7 +1796,7 @@
(jk_server_conf_t *) ap_get_module_config(s->module_config,
&jk_module);
- if (jk_map_read_property(conf->worker_properties, line,
+ if (jk_map_read_property(jk_worker_properties, line,
JK_MAP_HANDLE_DUPLICATES, conf->log) == JK_FALSE)
return ap_pstrcat(cmd->temp_pool, "Invalid JkWorkerProperty ", line, NULL);
@@ -2176,9 +2177,6 @@
jk_server_conf_t *c =
(jk_server_conf_t *) ap_pcalloc(p, sizeof(jk_server_conf_t));
- c->worker_properties = NULL;
- jk_map_alloc(&c->worker_properties);
- c->worker_file = NULL;
c->mount_file = NULL;
c->log_file = NULL;
c->log_fd = -1;
@@ -2237,7 +2235,6 @@
c->envvar_items = ap_make_array(p, 0, sizeof(envvar_item));
c->s = s;
- jk_map_put(c->worker_properties, "ServerRoot", ap_server_root, NULL);
return c;
}
@@ -2475,7 +2472,8 @@
jk_server_conf_t *conf =
(jk_server_conf_t *) ap_get_module_config(s->module_config,
&jk_module);
- jk_map_t *init_map = conf->worker_properties;
+ jk_map_alloc(&jk_worker_properties);
+ jk_map_put(jk_worker_properties, "ServerRoot", ap_server_root, NULL);
jk_log_fds = ap_make_table(p, 0);
@@ -2568,15 +2566,16 @@
* to make sure log file gets closed in the parent process */
ap_register_cleanup(p, s, jk_server_cleanup, ap_null_cleanup);
- if ((conf->worker_file != NULL) &&
- !jk_map_read_properties(init_map, conf->worker_file, NULL,
+ if ((jk_worker_file != NULL) &&
+ !jk_map_read_properties(jk_worker_properties, jk_worker_file, NULL,
JK_MAP_HANDLE_DUPLICATES, conf->log)) {
jk_error_exit(APLOG_MARK, APLOG_EMERG | APLOG_NOERRNO, s, p,
"Error in reading worker properties from '%s'",
- conf->worker_file);
+ jk_worker_file);
}
- if (jk_map_resolve_references(init_map, "worker.", 1, 1, conf->log) == JK_FALSE) {
+ if (jk_map_resolve_references(jk_worker_properties, "worker.",
+ 1, 1, conf->log) == JK_FALSE) {
jk_error_exit(APLOG_MARK, APLOG_EMERG | APLOG_NOERRNO, s, p,
"Error in resolving configuration references");
}
@@ -2586,7 +2585,7 @@
worker_env.virtual = "*"; /* for now */
worker_env.server_name = (char *)ap_get_server_version();
- if (wc_open(init_map, &worker_env, conf->log)) {
+ if (wc_open(jk_worker_properties, &worker_env, conf->log)) {
#if MODULE_MAGIC_NUMBER >= 19980527
/* Tell apache we're here */
ap_add_version_component(JK_EXPOSED_VERSION);
@@ -2871,6 +2870,12 @@
server_rec *tmp = s;
+ if (jk_worker_properties) {
+ jk_map_free(&jk_worker_properties);
+ jk_worker_properties = NULL;
+ jk_worker_file = NULL;
+ }
+
/* loop through all available servers to clean up all configuration
* records we've created
*/
@@ -2883,7 +2888,6 @@
wc_close(NULL);
uri_worker_map_free(&(conf->uw_map), NULL);
jk_map_free(&(conf->uri_to_context));
- jk_map_free(&(conf->worker_properties));
}
tmp = tmp->next;
}
Modified: tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c?rev=580793&r1=580792&r2=580793&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c (original)
+++ tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c Sun Sep 30 14:30:49 2007
@@ -157,10 +157,8 @@
apr_file_t *jklogfp;
/*
- * Worker stuff
+ * Mount stuff
*/
- jk_map_t *worker_properties;
- char *worker_file;
char *mount_file;
int mount_file_reload;
jk_map_t *uri_to_context;
@@ -233,6 +231,11 @@
static apr_global_mutex_t *jk_log_lock = NULL;
static char *jk_shm_file = NULL;
static size_t jk_shm_size = JK_SHM_DEF_SIZE;
+/*
+ * Worker stuff
+*/
+static jk_map_t *jk_worker_properties = NULL;
+static char *jk_worker_file = NULL;
static int JK_METHOD ws_start_response(jk_ws_service_t *s,
int status,
@@ -943,24 +946,21 @@
static const char *jk_set_worker_file(cmd_parms * cmd,
void *dummy, const char *worker_file)
{
- server_rec *s = cmd->server;
-
- jk_server_conf_t *conf =
- (jk_server_conf_t *) ap_get_module_config(s->module_config,
- &jk_module);
-
const char *err_string = ap_check_cmd_context(cmd, GLOBAL_ONLY);
if (err_string != NULL) {
return err_string;
}
+ if (jk_worker_file != NULL)
+ return "JkWorkersFile only allowed once";
+
/* we need an absolute path (ap_server_root_relative does the ap_pstrdup) */
- conf->worker_file = ap_server_root_relative(cmd->pool, worker_file);
+ jk_worker_file = ap_server_root_relative(cmd->pool, worker_file);
- if (conf->worker_file == NULL)
+ if (jk_worker_file == NULL)
return "JkWorkersFile file name invalid";
- if (jk_file_exists(conf->worker_file) != JK_TRUE)
+ if (jk_file_exists(jk_worker_file) != JK_TRUE)
return "Can't find the workers file specified";
return NULL;
@@ -1827,7 +1827,7 @@
return err_string;
}
- if (jk_map_read_property(conf->worker_properties, line,
+ if (jk_map_read_property(jk_worker_properties, line,
JK_MAP_HANDLE_DUPLICATES, conf->log) == JK_FALSE)
return apr_pstrcat(cmd->temp_pool, "Invalid JkWorkerProperty ", line, NULL);
@@ -2258,26 +2258,29 @@
{
server_rec *s = data;
+ if (jk_worker_properties) {
+ jk_map_free(&jk_worker_properties);
+ jk_worker_properties = NULL;
+ jk_worker_file = NULL;
+ }
+
while (NULL != s) {
jk_server_conf_t *conf =
(jk_server_conf_t *) ap_get_module_config(s->module_config,
&jk_module);
- if (conf && conf->worker_properties) {
+ if (conf && conf->uw_map) {
/* On pool cleanup pass NULL for the jk_logger to
prevent segmentation faults on Windows because
we can't guarantee what order pools get cleaned
up between APR implementations. */
if (conf->was_initialized)
wc_close(NULL);
- if (conf->worker_properties)
- jk_map_free(&conf->worker_properties);
if (conf->uri_to_context)
jk_map_free(&conf->uri_to_context);
if (conf->uw_map)
uri_worker_map_free(&conf->uw_map, NULL);
conf->was_initialized = JK_FALSE;
- conf->worker_properties = NULL;
}
s = s->next;
}
@@ -2292,9 +2295,6 @@
jk_server_conf_t *c =
(jk_server_conf_t *) apr_pcalloc(p, sizeof(jk_server_conf_t));
- c->worker_properties = NULL;
- jk_map_alloc(&c->worker_properties);
- c->worker_file = NULL;
c->mount_file = NULL;
c->log_file = NULL;
c->log = NULL;
@@ -2354,7 +2354,6 @@
c->envvar_items = apr_array_make(p, 0, sizeof(envvar_item));
c->s = s;
- jk_map_put(c->worker_properties, "ServerRoot", ap_server_root, NULL);
apr_pool_cleanup_register(p, s, jk_apr_pool_cleanup, jk_apr_pool_cleanup);
return c;
}
@@ -2657,8 +2656,8 @@
int is_threaded;
int mpm_threads = 1;
- /* jk_map_t *init_map = NULL; */
- jk_map_t *init_map = conf->worker_properties;
+ jk_map_alloc(&jk_worker_properties);
+ jk_map_put(jk_worker_properties, "ServerRoot", ap_server_root, NULL);
#if !defined(WIN32) && !defined(NETWARE)
if (!jk_shm_file) {
@@ -2693,16 +2692,17 @@
mpm_threads);
jk_set_worker_def_cache_size(mpm_threads);
- if ((conf->worker_file != NULL) &&
- !jk_map_read_properties(init_map, conf->worker_file, NULL,
+ if ((jk_worker_file != NULL) &&
+ !jk_map_read_properties(jk_worker_properties, jk_worker_file, NULL,
JK_MAP_HANDLE_DUPLICATES, conf->log)) {
ap_log_error(APLOG_MARK, APLOG_EMERG, 0, s,
"Error in reading worker properties from '%s'",
- conf->worker_file);
+ jk_worker_file);
return JK_FALSE;
}
- if (jk_map_resolve_references(init_map, "worker.", 1, 1, conf->log) == JK_FALSE) {
+ if (jk_map_resolve_references(jk_worker_properties, "worker.",
+ 1, 1, conf->log) == JK_FALSE) {
ap_log_error(APLOG_MARK, APLOG_EMERG, 0, s,
"Error in resolving configuration references");
return JK_FALSE;
@@ -2718,7 +2718,7 @@
worker_env.server_name = (char *)ap_get_server_version();
#endif
- if (wc_open(init_map, &worker_env, conf->log)) {
+ if (wc_open(jk_worker_properties, &worker_env, conf->log)) {
ap_add_version_component(pconf, JK_EXPOSED_VERSION);
jk_log(conf->log, JK_LOG_INFO,
"%s initialized",
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org