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/11/19 20:44:48 UTC

svn commit: r596407 - /tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c

Author: rjung
Date: Mon Nov 19 11:44:47 2007
New Revision: 596407

URL: http://svn.apache.org/viewvc?rev=596407&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.

Ported from r591985 of apache-2.0/mod_jk.c.

Modified:
    tomcat/connectors/trunk/jk/native/apache-1.3/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=596407&r1=596406&r2=596407&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 Mon Nov 19 11:44:47 2007
@@ -633,7 +633,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) {
@@ -693,7 +693,7 @@
             }
         }
 
-        if (conf->envvars_in_use) {
+        if (conf->envvars) {
             const array_header *t = conf->envvar_items;
             if (t && t->nelts) {
                 int i;
@@ -1781,6 +1781,12 @@
                                                   &jk_module);
 
     conf->envvars_in_use = JK_TRUE;
+    if (!conf->envvars) {
+        conf->envvars      = ap_make_table(cmd->pool, 0);
+        conf->envvars_def  = ap_make_table(cmd->pool, 0);
+        conf->envvar_items = ap_make_array(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.
@@ -2243,9 +2249,11 @@
     c->uw_map = NULL;
 
     c->envvars_in_use = JK_FALSE;
-    c->envvars = ap_make_table(p, 0);
-    c->envvars_def = ap_make_table(p, 0);
-    c->envvar_items = ap_make_array(p, 0, sizeof(envvar_item));
+    if (!s->is_virtual) {
+        c->envvars = ap_make_table(p, 0);
+        c->envvars_def = ap_make_table(p, 0);
+        c->envvar_items = ap_make_array(p, 0, sizeof(envvar_item));
+    }
 
     c->s = s;
 
@@ -2308,16 +2316,16 @@
 
     overrides->options |= (base->options & ~base->exclude_options);
 
-    if (base->envvars_in_use) {
-
-        if (ap_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 (ap_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)
@@ -2524,7 +2532,7 @@
                     ap_log_error(APLOG_MARK, APLOG_ERR, srv,
                                  "JkRequestLogFormat format array NULL");
             }
-            if (sconf->envvars_in_use) {
+            if (sconf->envvars && sconf->envvars_in_use) {
                 int i;
                 const array_header *arr;
                 const table_entry *elts;
@@ -2917,10 +2925,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;



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org