Author: mturk
Date: Wed Feb 25 16:25:48 2009
New Revision: 747847

URL: http://svn.apache.org/viewvc?rev=747847&view=rev
Log:
Update shared memory only if resolve is OK

Modified:
    tomcat/connectors/trunk/jk/native/common/jk_status.c

Modified: tomcat/connectors/trunk/jk/native/common/jk_status.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_status.c?rev=747847&r1=747846&r2=747847&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_status.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_status.c Wed Feb 25 16:25:48 
2009
@@ -3085,6 +3085,8 @@
     int i;
     int old;
     int as = 0;
+    char host[JK_SHM_STR_SIZ+1];
+    int  port = 0;
 
     JK_TRACE_ENTER(l);
     if (lb) {
@@ -3177,22 +3179,21 @@
             jk_log(l, JK_LOG_INFO,
                     "Status worker '%s' setting 'host' for sub worker '%s' to 
'%s'",
                     w->name, aw->name, arg);
-            strncpy(aw->s->hostname, arg, JK_SHM_STR_SIZ);
+            strncpy(host, arg, JK_SHM_STR_SIZ);
             rc |= 4;
             as = 1;
         }
     }
+    port = aw->s->port;
     if (set_int_if_changed(p, aw->name, "port", JK_STATUS_ARG_AJP_PORT_INT,
-                           0, INT_MAX, &aw->s->port, lb_name, l)) {
+                           0, INT_MAX, &port, lb_name, l)) {
         rc |= 4;
         as = 1;
     }
     if (as) {
-        aw->s->addr_sequence += as;
-        aw->host = aw->s->hostname;
-        aw->addr_sequence = aw->s->addr_sequence;
+        struct sockaddr_in inet_addr;
         aw->port = aw->s->port;
-        if (!jk_resolve(aw->host, aw->port, &aw->worker_inet_addr,
+        if (!jk_resolve(host, port, &inet_addr,
                         aw->worker.we->pool, l)) {
             jk_log(l, JK_LOG_ERROR,
                    "Status worker '%s' failed resolving 'address' for sub 
worker '%s' to '%s:%d'",
@@ -3200,7 +3201,15 @@
             strcpy(aw->s->hostname, "unknown");
             aw->host = aw->s->hostname;
             aw->port = aw->s->port = 0;
-       }
+        }
+        else {
+            strcpy(aw->s->hostname, host);
+            aw->port = port;        
+            aw->s->addr_sequence += as;
+            aw->host = aw->s->hostname;
+            aw->addr_sequence = aw->s->addr_sequence;
+            memcpy(&(aw->worker_inet_addr), &inet_addr, sizeof(inet_addr));
+        }
     }
     if (set_int_if_changed(p, aw->name, "ping_timeout", 
JK_STATUS_ARG_AJP_PING_TO,
                            0, INT_MAX, &aw->ping_timeout, lb_name, l))



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

Reply via email to