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]