Author: rjung
Date: Thu Nov 23 17:31:42 2006
New Revision: 478739

URL: http://svn.apache.org/viewvc?view=rev&rev=478739
Log:
Part 1 of the big jk_status overhaul:
Minor and local changes.

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=478739&r1=478738&r2=478739
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_status.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_status.c Thu Nov 23 17:31:42 
2006
@@ -50,7 +50,7 @@
 
 #define JK_STATUS_XMLE "</jk:status>\n"
 
-#define JK_STATUS_TEXTUPDATE_RESPONCE "OK - jk status worker updated\n"
+#define JK_STATUS_TEXTUPDATE_RESPONSE "OK - jk status worker updated\n"
 
 typedef struct status_worker status_worker_t;
 
@@ -292,33 +292,38 @@
     return rv;
 }
 
-static int status_bool(const char *param, const char *req)
+static int status_bool(const char *param, const char *req, int def)
 {
     const char *v;
     char buf[32];
-    int rv = 0;
+    int rv = def;
 
     if ((v = status_cmd(param, req, buf, sizeof(buf)))) {
         if (strcasecmp(v, "on") == 0 ||
-            strcasecmp(v, "true") == 0)
+            strcasecmp(v, "true") == 0 ||
+            strcasecmp(v, "1") == 0)
             rv = 1;
+        else if (strcasecmp(v, "off") == 0 ||
+            strcasecmp(v, "false") == 0 ||
+            strcasecmp(v, "0") == 0)
+            rv = 0;
     }
     return rv;
 }
 
-static void display_maps(jk_ws_service_t *s, status_worker_t *sw,
+static void display_maps(jk_ws_service_t *s,
                          jk_uri_worker_map_t *uwmap,
                          const char *worker, jk_logger_t *l)
 {
     char buf[64];
     unsigned int i;
 
-    jk_puts(s, "<br/>Uri Mappings:\n");
+    jk_putv(s, "<hr/><h3>URI Mappings for ", worker, "</h3>\n", NULL);
     jk_puts(s, "<table>\n<tr><th>Match Type</th><th>Uri</th>"
                "<th>Source</th></tr>\n");
     for (i = 0; i < uwmap->size; i++) {
         uri_worker_record_t *uwr = uwmap->maps[i];
-        if (worker && strcmp(uwr->worker_name, worker)) {
+        if (!worker || strcmp(uwr->worker_name, worker)) {
             continue;
         }
         jk_putv(s, "<tr><td>",
@@ -332,7 +337,7 @@
     jk_puts(s, "</table>\n");
 }
 
-static void dump_maps(jk_ws_service_t *s, status_worker_t *sw,
+static void dump_maps(jk_ws_service_t *s,
                       jk_uri_worker_map_t *uwmap,
                       const char *worker, jk_logger_t *l)
 {
@@ -341,7 +346,7 @@
 
     for (i = 0; i < uwmap->size; i++) {
         uri_worker_record_t *uwr = uwmap->maps[i];
-        if (worker && strcmp(uwr->worker_name, worker)) {
+        if (!worker || strcmp(uwr->worker_name, worker)) {
             continue;
         }
         jk_printf(s, "    <jk:map type=\"%s\" uri=\"%s\" source=\"%s\" />\n",
@@ -551,7 +556,7 @@
                 jk_puts(s, "/></td></tr>\n");
                 jk_puts(s, "</table>\n");
 
-                display_maps(s, sw, s->uw_map, dworker, l);
+                display_maps(s, s->uw_map, dworker, l);
                 jk_puts(s, "<br/><input type=\"submit\" value=\"Update 
Balancer\"/></form>\n");
             }
         }
@@ -564,7 +569,7 @@
             jk_putv(s, "<td>", jk_dump_hinfo(&aw->worker_inet_addr, buf),
                     "</td>\n</tr>\n", NULL);
             jk_puts(s, "</table>\n");
-            display_maps(s, sw, s->uw_map, dworker, l);
+            display_maps(s, s->uw_map, dworker, l);
         }
     }
     /* Display legend */
@@ -672,7 +677,7 @@
                 jk_printf(s, " domain=\"%s\"", wr->s->domain);
             jk_puts(s, " />\n");
         }
-        dump_maps(s, sw, s->uw_map, lb->s->name, l);
+        dump_maps(s, s->uw_map, lb->s->name, l);
         jk_puts(s, "  </jk:balancer>\n");
 
     }
@@ -699,8 +704,8 @@
         if (i < 1)
             i = 1;
         lb->s->recover_wait_time = i;
-        lb->s->sticky_session = status_bool("ls", s->query_string);
-        lb->s->sticky_session_force = status_bool("lf", s->query_string);
+        lb->s->sticky_session = status_bool("ls", s->query_string, 
lb->s->sticky_session);
+        lb->s->sticky_session_force = status_bool("lf", s->query_string, 
lb->s->sticky_session_force);
     }
     else  {
         int n = status_int("lb", s->query_string, -1);
@@ -778,11 +783,15 @@
         for (i = 0; i < lb->num_of_workers; i++) {
             worker_record_t *wr = &(lb->lb_workers[i]);
             wr->s->busy             = 0;
+            wr->s->client_errors    = 0;
             wr->s->elected          = 0;
+            wr->s->elected_snapshot = 0;
             wr->s->error_time       = 0;
             wr->s->errors           = 0;
             wr->s->lb_value         = 0;
             wr->s->max_busy         = 0;
+            wr->s->recoveries       = 0;
+            wr->s->recovery_errors  = 0;
             wr->s->readed           = 0;
             wr->s->transferred      = 0;
             wr->s->state            = JK_LB_STATE_NA;
@@ -792,18 +801,20 @@
 
 static int status_cmd_type(const char *req)
 {
+    char cmdtype[32];
     if (!req)
-        return 0;
-    else if (!strncmp(req, "cmd=list", 8))
-        return 0;
-    else if (!strncmp(req, "cmd=show", 8))
-        return 1;
-    else if (!strncmp(req, "cmd=update", 10))
-        return 2;
-    else if (!strncmp(req, "cmd=reset", 9))
-        return 3;
-    else
-        return 0;
+       return 0;
+    if (status_cmd("cmd", req, cmdtype, sizeof(cmdtype)) != NULL) {
+       if (!strncmp(cmdtype, "list", strlen("list")))
+            return 0;
+       else if (!strncmp(cmdtype, "show", strlen("show")))
+            return 1;
+       else if (!strncmp(cmdtype, "update", strlen("update")))
+            return 2;
+       else if (!strncmp(cmdtype, "reset", strlen("reset")))
+            return 3;
+    }
+    return 0;
 }
 
 static int status_mime_type(const char *req)
@@ -967,8 +978,8 @@
     }
     else {
         s->start_response(s, 200, "OK", headers_names, headers_vtxt, 3);
-        s->write(s,  JK_STATUS_TEXTUPDATE_RESPONCE,
-                 sizeof(JK_STATUS_TEXTUPDATE_RESPONCE) - 1);
+        s->write(s,  JK_STATUS_TEXTUPDATE_RESPONSE,
+                 sizeof(JK_STATUS_TEXTUPDATE_RESPONSE) - 1);
     }
     if (worker)
         free(worker);



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to