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:51:30 UTC

svn commit: r580798 - 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:51:29 2007
New Revision: 580798

URL: http://svn.apache.org/viewvc?rev=580798&view=rev
Log:
Don't double init or destroy per server config.
Use was_initialized in a consistent way for
apache httpd 1.3 and 2.x.
Move logger open inside the double init check.

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=580798&r1=580797&r2=580798&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:51:29 2007
@@ -138,6 +138,8 @@
 
     jk_uri_worker_map_t *uw_map;
 
+    int was_initialized;
+
     /*
      * Automatic context path apache alias
      */
@@ -2187,6 +2189,7 @@
     c->format = NULL;
     c->mountcopy = JK_FALSE;
     c->exclude_options = 0;
+    c->was_initialized = JK_FALSE;
 
     if (s->is_virtual) {
         c->mount_file_reload = JK_UNSET;
@@ -2483,8 +2486,9 @@
     for (; srv; srv = srv->next) {
         jk_server_conf_t *sconf = (jk_server_conf_t *)ap_get_module_config(srv->module_config,
                                                                            &jk_module);
-        open_jk_log(srv, p);
-        if (sconf) {
+        if (sconf && sconf->was_initialized == JK_FALSE) {
+            sconf->was_initialized = JK_TRUE;
+            open_jk_log(srv, p);
             sconf->options &= ~sconf->exclude_options;
             if (!uri_worker_map_alloc(&(sconf->uw_map),
                                       sconf->uri_to_context, sconf->log))
@@ -2865,11 +2869,9 @@
 /** BEGIN SREVILAK
  * body taken from exit_handler()
  */
-static void jk_generic_cleanup(server_rec * s)
+static void jk_generic_cleanup(server_rec *s)
 {
 
-    server_rec *tmp = s;
-
     if (jk_worker_properties) {
         jk_map_free(&jk_worker_properties);
         jk_worker_properties = NULL;
@@ -2879,17 +2881,24 @@
     /* loop through all available servers to clean up all configuration
      * records we've created
      */
-    while (NULL != tmp) {
+    while (NULL != s) {
         jk_server_conf_t *conf =
-            (jk_server_conf_t *) ap_get_module_config(tmp->module_config,
+            (jk_server_conf_t *) ap_get_module_config(s->module_config,
                                                       &jk_module);
 
-        if (conf) {
+        if (conf && conf->was_initialized == JK_TRUE) {
+            /* 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. */
             wc_close(NULL);
-            uri_worker_map_free(&(conf->uw_map), NULL);
-            jk_map_free(&(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);
+            conf->was_initialized = JK_FALSE;
         }
-        tmp = tmp->next;
+        s = s->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=580798&r1=580797&r2=580798&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:51:29 2007
@@ -2269,18 +2269,17 @@
             (jk_server_conf_t *) ap_get_module_config(s->module_config,
                                                       &jk_module);
 
-        if (conf && conf->uw_map) {
+        if (conf && conf->was_initialized == JK_TRUE) {
             /* 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);
+            wc_close(NULL);
             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->was_initialized = JK_FALSE;
         }
         s = s->next;
     }
@@ -2766,7 +2765,7 @@
     if (!s->is_virtual) {
         conf = (jk_server_conf_t *)ap_get_module_config(s->module_config,
                                                         &jk_module);
-        if (!conf->was_initialized) {
+        if (conf->was_initialized == JK_FALSE) {
             conf->was_initialized = JK_TRUE;
             /* step through the servers and open each jk logfile
              * and do additional post config initialization.
@@ -2774,9 +2773,10 @@
             for (; srv; srv = srv->next) {
                 jk_server_conf_t *sconf = (jk_server_conf_t *)ap_get_module_config(srv->module_config,
                                                                                    &jk_module);
-                if (open_jklog(srv, pconf))
-                    return HTTP_INTERNAL_SERVER_ERROR;
-                if (sconf) {
+                if (sconf && sconf->was_initialized == JK_FALSE) {
+                    sconf->was_initialized = JK_TRUE;
+                    if (open_jklog(srv, pconf))
+                        return HTTP_INTERNAL_SERVER_ERROR;
                     sconf->options &= ~sconf->exclude_options;
                     if (!uri_worker_map_alloc(&(sconf->uw_map),
                                               sconf->uri_to_context, sconf->log))



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