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 2006/12/02 14:14:04 UTC

svn commit: r481556 - /tomcat/connectors/trunk/jk/native/common/jk_status.c

Author: rjung
Date: Sat Dec  2 05:14:02 2006
New Revision: 481556

URL: http://svn.apache.org/viewvc?view=rev&rev=481556
Log:
Changing return type of argument passing in status worker
to a three value type (JK_TRUE, JK_FALSE and JK_UNSET).
JK_UNSET is used to distinguish an empty parameter from
a missing one.

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?view=diff&rev=481556&r1=481555&r2=481556
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_status.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_status.c Sat Dec  2 05:14:02 2006
@@ -342,7 +342,7 @@
         return "True";
 }
 
-static char *status_get_arg_raw(const char *param, const char *req, char *buf, size_t len)
+static int status_get_arg_raw(const char *param, const char *req, char *buf, size_t len)
 {
     char ps[32];
     char *p;
@@ -350,9 +350,9 @@
 
     *buf = '\0';
     if (!req)
-        return NULL;
+        return JK_FALSE;
     if (!param)
-        return NULL;
+        return JK_FALSE;
     sprintf(ps, "&%s=", param);
     p = strstr(req, ps);
     if (!p) {
@@ -373,23 +373,25 @@
         }
         buf[l] = '\0';
         if (l)
-            return buf;
+            return JK_TRUE;
         else
-            return NULL;
+            return JK_UNSET;
     }
     else
-        return NULL;
+        return JK_FALSE;
 }
 
-static const char *status_get_arg(const char *param, const char *req, char *buf, size_t len)
+static int status_get_arg(const char *param, const char *req, char *buf, size_t len)
 {
-    if (status_get_arg_raw(param, req, buf, len)) {
+    int rv;
+
+    rv = status_get_arg_raw(param, req, buf, len);
+    if (rv == JK_TRUE) {
         char *off = buf;
         while ((off = strpbrk(off, JK_STATUS_ESC_CHARS)))
             off[0] = '@';
-        return buf;
     }
-    return NULL;
+    return rv;
 }
 
 static int status_get_int(const char *param, const char *req, int def)
@@ -397,7 +399,7 @@
     char buf[32];
     int rv = def;
 
-    if (status_get_arg_raw(param, req, buf, sizeof(buf) -1)) {
+    if (status_get_arg_raw(param, req, buf, sizeof(buf)) == JK_TRUE) {
         rv = atoi(buf);
     }
     return rv;
@@ -408,7 +410,7 @@
     char buf[32];
     int rv = def;
 
-    if (status_get_arg_raw(param, req, buf, sizeof(buf))) {
+    if (status_get_arg_raw(param, req, buf, sizeof(buf)) == JK_TRUE) {
         if (strcasecmp(buf, "on") == 0 ||
             strcasecmp(buf, "true") == 0 ||
             strcasecmp(buf, "1") == 0)
@@ -549,16 +551,16 @@
     *refresh = 0;
     if (!s->query_string)
         return;
-    if (status_get_arg_raw(JK_STATUS_ARG_CMD, s->query_string, buf, sizeof(buf)))
+    if (status_get_arg_raw(JK_STATUS_ARG_CMD, s->query_string, buf, sizeof(buf)) == JK_TRUE)
         *cmd = status_cmd_int(buf);
-    if (status_get_arg_raw(JK_STATUS_ARG_MIME, s->query_string, buf, sizeof(buf)))
+    if (status_get_arg_raw(JK_STATUS_ARG_MIME, s->query_string, buf, sizeof(buf)) == JK_TRUE)
         *mime = status_mime_int(buf);
-    if (status_get_arg_raw(JK_STATUS_ARG_FROM, s->query_string, buf, sizeof(buf)))
+    if (status_get_arg_raw(JK_STATUS_ARG_FROM, s->query_string, buf, sizeof(buf)) == JK_TRUE)
         *from = status_cmd_int(buf);
     *refresh = status_get_int(JK_STATUS_ARG_REFRESH, s->query_string, 0);
-    if (status_get_arg(JK_STATUS_ARG_WORKER, s->query_string, buf, sizeof(buf)))
+    if (status_get_arg(JK_STATUS_ARG_WORKER, s->query_string, buf, sizeof(buf)) == JK_TRUE)
         strncpy(worker, buf, JK_SHM_STR_SIZ);
-    if (status_get_arg(JK_STATUS_ARG_WORKER_MEMBER, s->query_string, buf, sizeof(buf)))
+    if (status_get_arg(JK_STATUS_ARG_WORKER_MEMBER, s->query_string, buf, sizeof(buf)) == JK_TRUE)
         strncpy(sub_worker, buf, JK_SHM_STR_SIZ);
     if (JK_IS_DEBUG_LEVEL(l))
         jk_log(l, JK_LOG_DEBUG,
@@ -1553,6 +1555,7 @@
 {
     char buf[128];
     int rc = 0;
+    int rv;
     int i;
 
     JK_TRACE_ENTER(l);
@@ -1580,8 +1583,8 @@
         /* Recalculate the load multiplicators wrt. lb_factor */
         rc |= 2;
     }
-    if (status_get_arg(JK_STATUS_ARG_LBM_ROUTE,
-                       s->query_string, buf, sizeof(buf))) {
+    if ((rv = status_get_arg(JK_STATUS_ARG_LBM_ROUTE,
+                             s->query_string, buf, sizeof(buf))) == JK_TRUE) {
         if (strncmp(wr->s->jvm_route, buf, JK_SHM_STR_SIZ)) {
             jk_log(l, JK_LOG_INFO,
                    "setting 'jvm_route' for sub worker '%s' of lb worker '%s' to '%s'",
@@ -1597,14 +1600,14 @@
             }
         }
     }
-    else {
+    else if (rv == JK_UNSET) {
         jk_log(l, JK_LOG_INFO,
                "resetting 'jvm_route' for sub worker '%s' of lb worker '%s'",
                wr->s->name, worker);
         memset(wr->s->jvm_route, 0, JK_SHM_STR_SIZ);
     }
-    if (status_get_arg(JK_STATUS_ARG_LBM_REDIRECT,
-                       s->query_string, buf, sizeof(buf))) {
+    if ((rv = status_get_arg(JK_STATUS_ARG_LBM_REDIRECT,
+                             s->query_string, buf, sizeof(buf))) == JK_TRUE) {
         if (strncmp(wr->s->redirect, buf, JK_SHM_STR_SIZ)) {
             jk_log(l, JK_LOG_INFO,
                    "setting 'redirect' for sub worker '%s' of lb worker '%s' to '%s'",
@@ -1612,14 +1615,14 @@
             strncpy(wr->s->redirect, buf, JK_SHM_STR_SIZ);
         }
     }
-    else {
+    else if (rv == JK_UNSET) {
         jk_log(l, JK_LOG_INFO,
                "resetting 'redirect' for sub worker '%s' of lb worker '%s'",
                wr->s->name, worker);
         memset(wr->s->redirect, 0, JK_SHM_STR_SIZ);
     }
-    if (status_get_arg(JK_STATUS_ARG_LBM_DOMAIN,
-                       s->query_string, buf, sizeof(buf))) {
+    if ((rv = status_get_arg(JK_STATUS_ARG_LBM_DOMAIN,
+                             s->query_string, buf, sizeof(buf))) == JK_TRUE) {
         if (strncmp(wr->s->domain, buf, JK_SHM_STR_SIZ)) {
             jk_log(l, JK_LOG_INFO,
                    "setting 'domain' for sub worker '%s' of lb worker '%s' to '%s'",
@@ -1627,7 +1630,7 @@
             strncpy(wr->s->domain, buf, JK_SHM_STR_SIZ);
         }
     }
-    else {
+    else if (rv == JK_UNSET) {
         jk_log(l, JK_LOG_INFO,
                "resetting 'domain' for sub worker '%s' of lb worker '%s'",
                wr->s->name, worker);
@@ -1726,72 +1729,74 @@
                     rc = 2;
                 }
             }
-            else if (!strcmp(attribute, JK_STATUS_ARG_LBM_ROUTE)) {
-                if (status_get_arg(vname, s->query_string, buf, sizeof(buf))) {
-                    if (strncmp(wr->s->jvm_route, buf, JK_SHM_STR_SIZ)) {
-                        jk_log(l, JK_LOG_INFO,
-                               "setting 'jvm_route' for sub worker '%s' of lb worker '%s' to '%s'",
-                               wr->s->name, name, buf);
-                        strncpy(wr->s->jvm_route, buf, JK_SHM_STR_SIZ);
-                        if (!wr->s->domain[0]) {
-                            char * id_domain = strchr(wr->s->jvm_route, '.');
-                            if (id_domain) {
-                                *id_domain = '\0';
-                                strcpy(wr->s->domain, wr->s->jvm_route);
-                                *id_domain = '.';
-                            }
-                        }
-                    }
-                }
-                else {
+            else if (!strcmp(attribute, JK_STATUS_ARG_LBM_DISTANCE)) {
+                i = status_get_int(vname, s->query_string, wr->s->distance);
+                if (i != wr->s->distance && i > 0) {
                     jk_log(l, JK_LOG_INFO,
-                           "resetting 'jvm_route' for sub worker '%s' of lb worker '%s'",
-                           wr->s->name, name);
-                    memset(wr->s->jvm_route, 0, JK_SHM_STR_SIZ);
+                           "setting 'distance' for sub worker '%s' of lb worker '%s' to '%i'",
+                           wr->s->name, name, i);
+                    wr->s->lb_factor = i;
                 }
             }
-            else if (!strcmp(attribute, JK_STATUS_ARG_LBM_REDIRECT)) {
-                if (status_get_arg(vname, s->query_string, buf, sizeof(buf))) {
-                    if (strncmp(wr->s->redirect, buf, JK_SHM_STR_SIZ)) {
+            else {
+                int rv = status_get_arg(vname, s->query_string, buf, sizeof(buf));
+                if (!strcmp(attribute, JK_STATUS_ARG_LBM_ROUTE)) {
+                    if (rv == JK_TRUE) {
+                        if (strncmp(wr->s->jvm_route, buf, JK_SHM_STR_SIZ)) {
+                            jk_log(l, JK_LOG_INFO,
+                                   "setting 'jvm_route' for sub worker '%s' of lb worker '%s' to '%s'",
+                                   wr->s->name, name, buf);
+                            strncpy(wr->s->jvm_route, buf, JK_SHM_STR_SIZ);
+                            if (!wr->s->domain[0]) {
+                                char * id_domain = strchr(wr->s->jvm_route, '.');
+                                if (id_domain) {
+                                    *id_domain = '\0';
+                                    strcpy(wr->s->domain, wr->s->jvm_route);
+                                    *id_domain = '.';
+                                }
+                            }
+                        }
+                    }
+                    else if (rv == JK_UNSET) {
                         jk_log(l, JK_LOG_INFO,
-                               "setting 'redirect' for sub worker '%s' of lb worker '%s' to '%s'",
-                               wr->s->name, name, buf);
-                        strncpy(wr->s->redirect, buf, JK_SHM_STR_SIZ);
+                               "resetting 'jvm_route' for sub worker '%s' of lb worker '%s'",
+                               wr->s->name, name);
+                        memset(wr->s->jvm_route, 0, JK_SHM_STR_SIZ);
                     }
                 }
-                else {
-                    jk_log(l, JK_LOG_INFO,
-                           "resetting 'redirect' for sub worker '%s' of lb worker '%s'",
-                           wr->s->name, name);
-                    memset(wr->s->redirect, 0, JK_SHM_STR_SIZ);
-                }
-            }
-            else if (!strcmp(attribute, JK_STATUS_ARG_LBM_DOMAIN)) {
-                if (status_get_arg(vname, s->query_string, buf, sizeof(buf))) {
-                    if (strncmp(wr->s->domain, buf, JK_SHM_STR_SIZ)) {
+                else if (!strcmp(attribute, JK_STATUS_ARG_LBM_REDIRECT)) {
+                    if (rv == JK_TRUE) {
+                        if (strncmp(wr->s->redirect, buf, JK_SHM_STR_SIZ)) {
+                            jk_log(l, JK_LOG_INFO,
+                                   "setting 'redirect' for sub worker '%s' of lb worker '%s' to '%s'",
+                                   wr->s->name, name, buf);
+                            strncpy(wr->s->redirect, buf, JK_SHM_STR_SIZ);
+                        }
+                    }
+                    else if (rv == JK_UNSET) {
                         jk_log(l, JK_LOG_INFO,
-                               "setting 'domain' for sub worker '%s' of lb worker '%s' to '%s'",
-                               wr->s->name, name, buf);
-                        strncpy(wr->s->domain, buf, JK_SHM_STR_SIZ);
+                               "resetting 'redirect' for sub worker '%s' of lb worker '%s'",
+                               wr->s->name, name);
+                        memset(wr->s->redirect, 0, JK_SHM_STR_SIZ);
                     }
                 }
-                else {
-                    jk_log(l, JK_LOG_INFO,
-                           "resetting 'domain' for sub worker '%s' of lb worker '%s'",
-                           wr->s->name, name);
-                    memset(wr->s->domain, 0, JK_SHM_STR_SIZ);
-                }
-
-            }
-            else if (!strcmp(attribute, JK_STATUS_ARG_LBM_DISTANCE)) {
-                i = status_get_int(vname, s->query_string, wr->s->distance);
-                if (i != wr->s->distance && i > 0) {
-                    jk_log(l, JK_LOG_INFO,
-                           "setting 'distance' for sub worker '%s' of lb worker '%s' to '%i'",
-                           wr->s->name, name, i);
-                    wr->s->lb_factor = i;
+                else if (!strcmp(attribute, JK_STATUS_ARG_LBM_DOMAIN)) {
+                    if (rv == JK_TRUE) {
+                        if (strncmp(wr->s->domain, buf, JK_SHM_STR_SIZ)) {
+                            jk_log(l, JK_LOG_INFO,
+                                   "setting 'domain' for sub worker '%s' of lb worker '%s' to '%s'",
+                                   wr->s->name, name, buf);
+                            strncpy(wr->s->domain, buf, JK_SHM_STR_SIZ);
+                        }
+                    }
+                    else if (rv == JK_UNSET) {
+                        jk_log(l, JK_LOG_INFO,
+                               "resetting 'domain' for sub worker '%s' of lb worker '%s'",
+                               wr->s->name, name);
+                        memset(wr->s->domain, 0, JK_SHM_STR_SIZ);
+                    }
+    
                 }
-
             }
         }
         if (rc == 1)
@@ -2091,7 +2096,8 @@
     if (!sub_worker || !sub_worker[0]) {
         char buf[128];
 
-        if (status_get_arg_raw(JK_STATUS_ARG_LB_MEMBER_ATT, s->query_string, buf, sizeof(buf)))
+        if (status_get_arg_raw(JK_STATUS_ARG_LB_MEMBER_ATT,
+                               s->query_string, buf, sizeof(buf)) == JK_TRUE)
             form_all_members(s, w, buf, from, refresh, l);
         else
             form_worker(s, w, from, refresh, l);
@@ -2160,7 +2166,8 @@
     if (!sub_worker || !sub_worker[0]) {
         char buf[128];
 
-        if (status_get_arg_raw(JK_STATUS_ARG_LB_MEMBER_ATT, s->query_string, buf, sizeof(buf)))
+        if (status_get_arg_raw(JK_STATUS_ARG_LB_MEMBER_ATT,
+                               s->query_string, buf, sizeof(buf)) == JK_TRUE)
             commit_all_members(s, w, buf, l);
         else
             commit_worker(s, w, l);



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