Author: mturk
Date: Mon Nov 5 05:15:12 2007
New Revision: 591985
URL: http://svn.apache.org/viewvc?rev=591985&view=rev
Log:
Make envvar tables created on demand. Only non virtual hosts have pre-allocated
tables, other are allocated if JkEnvVar is specified inside vhost
Modified:
tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c
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=591985&r1=591984&r2=591985&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 Mon Nov 5 05:15:12
2007
@@ -656,7 +656,7 @@
s->ssl_session = NULL;
s->ssl_key_size = -1; /* required by Servlet 2.3 Api, added in jtc */
- if (conf->ssl_enable || conf->envvars_in_use) {
+ if (conf->ssl_enable || conf->envvars) {
ap_add_common_vars(r);
if (conf->ssl_enable) {
@@ -716,7 +716,7 @@
}
}
- if (conf->envvars_in_use) {
+ if (conf->envvars) {
const apr_array_header_t *t = conf->envvar_items;
if (t && t->nelts) {
int i;
@@ -1810,6 +1810,12 @@
&jk_module);
conf->envvars_in_use = JK_TRUE;
+ if (!conf->envvars) {
+ conf->envvars = apr_table_make(cmd->pool, 0);
+ conf->envvars_def = apr_table_make(cmd->pool, 0);
+ conf->envvar_items = apr_array_make(cmd->pool, 0,
+ sizeof(envvar_item));
+ }
/* env_name is mandatory, default_value is optional.
* No value means send the attribute only, if the env var is set during
runtime.
@@ -2289,10 +2295,14 @@
we can't guarantee what order pools get cleaned
up between APR implementations. */
wc_close(NULL);
- if (conf->uri_to_context)
+ if (conf->uri_to_context) {
jk_map_free(&conf->uri_to_context);
- if (conf->uw_map)
- uri_worker_map_free(&conf->uw_map, NULL);
+ /* We cannot have allocated uw_map
+ * unless we've allocated uri_to_context
+ */
+ if (conf->uw_map)
+ uri_worker_map_free(&conf->uw_map, NULL);
+ }
conf->was_initialized = JK_FALSE;
}
s = s->next;
@@ -2363,9 +2373,11 @@
c->uw_map = NULL;
c->envvars_in_use = JK_FALSE;
- c->envvars = apr_table_make(p, 0);
- c->envvars_def = apr_table_make(p, 0);
- c->envvar_items = apr_array_make(p, 0, sizeof(envvar_item));
+ if (!s->is_virtual) {
+ c->envvars = apr_table_make(p, 0);
+ c->envvars_def = apr_table_make(p, 0);
+ c->envvar_items = apr_array_make(p, 0, sizeof(envvar_item));
+ }
c->s = s;
apr_pool_cleanup_register(p, s, jk_apr_pool_cleanup, jk_apr_pool_cleanup);
@@ -2431,15 +2443,16 @@
overrides->options |= (base->options & ~base->exclude_options);
- if (base->envvars_in_use) {
- if (apr_table_elts(base->envvars)) {
- overrides->envvars_in_use = JK_TRUE;
+ if (base->envvars) {
+ if (overrides->envvars && overrides->envvars_in_use) {
merge_apr_table(base->envvars, overrides->envvars);
- }
- if (apr_table_elts(base->envvars_def)) {
- overrides->envvars_in_use = JK_TRUE;
merge_apr_table(base->envvars_def, overrides->envvars_def);
}
+ else {
+ overrides->envvars = base->envvars;
+ overrides->envvars_def = base->envvars_def;
+ overrides->envvar_items = base->envvar_items;
+ }
}
if (overrides->mount_file_reload == JK_UNSET)
@@ -2813,7 +2826,7 @@
ap_log_error(APLOG_MARK, APLOG_ERR, 0, s,
"JkRequestLogFormat format array
NULL");
}
- if (sconf->envvars_in_use) {
+ if (sconf->envvars && sconf->envvars_in_use) {
int i;
const apr_array_header_t *arr;
const apr_table_entry_t *elts;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]