From: Jim Jagielski Date: Mon, 1 Oct 2012 14:14:53 +0000 (+0000) Subject: Bring XML output up to snuff for balancer-manager X-Git-Tag: 2.5.0-alpha~6252 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aaaca4d1db5d9219a5931a9f8fdd30e15ee63de9;p=thirdparty%2Fapache%2Fhttpd.git Bring XML output up to snuff for balancer-manager git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1392345 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/proxy/mod_proxy_balancer.c b/modules/proxy/mod_proxy_balancer.c index 96c4aac0346..37cc3a8a089 100644 --- a/modules/proxy/mod_proxy_balancer.c +++ b/modules/proxy/mod_proxy_balancer.c @@ -1212,6 +1212,7 @@ static int balancer_handler(request_rec *r) ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(01204) "genning page"); if (apr_table_get(params, "xml")) { + char date[APR_RFC822_DATE_LEN]; ap_set_content_type(r, "text/xml"); ap_rputs("\n", r); ap_rputs("\n", r); @@ -1219,18 +1220,171 @@ static int balancer_handler(request_rec *r) balancer = (proxy_balancer *)conf->balancers->elts; for (i = 0; i < conf->balancers->nelts; i++) { ap_rputs(" \n", r); + /* Start proxy_balancer */ ap_rvputs(r, " ", balancer->s->name, "\n", NULL); + if (balancer->s->sticky) { + ap_rvputs(r, " ", balancer->s->sticky, + "\n", NULL); + ap_rprintf(r, + " %s\n", + (balancer->s->sticky_force ? "On" : "Off")); + } + ap_rprintf(r, + " %" APR_TIME_T_FMT "", + apr_time_sec(balancer->s->timeout)); + if (balancer->s->max_attempts_set) { + ap_rprintf(r, + " %d\n", + balancer->s->max_attempts); + } + ap_rvputs(r, " ", balancer->lbmethod->name, + "\n", NULL); + if (balancer->s->sticky) { + ap_rprintf(r, + " %s\n", + (balancer->s->scolonsep ? "On" : "Off")); + } + /* End proxy_balancer */ ap_rputs(" \n", r); workers = (proxy_worker **)balancer->workers->elts; for (n = 0; n < balancer->workers->nelts; n++) { worker = *workers; + /* Start proxy_worker */ ap_rputs(" \n", r); + ap_rvputs(r, " ", worker->s->name, + "\n", NULL); ap_rvputs(r, " ", worker->s->scheme, "\n", NULL); ap_rvputs(r, " ", worker->s->hostname, "\n", NULL); ap_rprintf(r, " %d\n", worker->s->lbfactor); + ap_rprintf(r, + " %d\n", + worker->s->port); + ap_rprintf(r, " %d\n", + worker->s->min); + ap_rprintf(r, " %d\n", + worker->s->smax); + ap_rprintf(r, " %d\n", + worker->s->hmax); + ap_rprintf(r, + " %" APR_TIME_T_FMT "\n", + apr_time_sec(worker->s->ttl)); + if (worker->s->timeout_set) { + ap_rprintf(r, + " %" APR_TIME_T_FMT "\n", + apr_time_sec(worker->s->timeout)); + } + if (worker->s->acquire_set) { + ap_rprintf(r, + " %" APR_TIME_T_FMT "\n", + apr_time_msec(worker->s->acquire)); + } + if (worker->s->recv_buffer_size_set) { + ap_rprintf(r, + " %" APR_SIZE_T_FMT "\n", + worker->s->recv_buffer_size); + } + if (worker->s->io_buffer_size_set) { + ap_rprintf(r, + " %" APR_SIZE_T_FMT "\n", + worker->s->io_buffer_size); + } + if (worker->s->keepalive_set) { + ap_rprintf(r, + " %s\n", + (worker->s->keepalive ? "On" : "Off")); + } + /* Begin proxy_worker_stat */ + ap_rputs(" ", r); + if (worker->s->status & PROXY_WORKER_DISABLED) + ap_rputs("Disabled", r); + else if (worker->s->status & PROXY_WORKER_IN_ERROR) + ap_rputs("Error", r); + else if (worker->s->status & PROXY_WORKER_STOPPED) + ap_rputs("Stopped", r); + else if (worker->s->status & PROXY_WORKER_HOT_STANDBY) + ap_rputs("Standby", r); + else if (PROXY_WORKER_IS_USABLE(worker)) + ap_rputs("OK", r); + else if (!PROXY_WORKER_IS_INITIALIZED(worker)) + ap_rputs("Uninitialized", r); + ap_rputs("\n", r); + if ((worker->s->error_time > 0) && apr_rfc822_date(date, worker->s->error_time) == APR_SUCCESS) { + ap_rvputs(r, " ", date, + "\n", NULL); + } + ap_rprintf(r, + " %d\n", + worker->s->retries); + ap_rprintf(r, + " %d\n", + worker->s->lbstatus); + ap_rprintf(r, + " %d\n", + worker->s->lbfactor); + ap_rprintf(r, + " %" APR_OFF_T_FMT "\n", + worker->s->transferred); + ap_rprintf(r, + " %" APR_OFF_T_FMT "\n", + worker->s->read); + ap_rprintf(r, + " %" APR_SIZE_T_FMT "\n", + worker->s->elected); + ap_rvputs(r, " ", + ap_escape_html(r->pool, worker->s->route), + "\n", NULL); + ap_rvputs(r, " ", + ap_escape_html(r->pool, worker->s->redirect), + "\n", NULL); + ap_rprintf(r, + " %" APR_SIZE_T_FMT "\n", + worker->s->busy); + ap_rprintf(r, " %d\n", + worker->s->lbset); + /* End proxy_worker_stat */ + if (!strcasecmp(worker->s->scheme, "ajp")) { + ap_rputs(" ", r); + switch (worker->s->flush_packets) { + case flush_off: + ap_rputs("Off", r); + break; + case flush_on: + ap_rputs("On", r); + break; + case flush_auto: + ap_rputs("Auto", r); + break; + } + ap_rputs("\n", r); + if (worker->s->flush_packets == flush_auto) { + ap_rprintf(r, + " %d\n", + worker->s->flush_wait); + } + if (worker->s->ping_timeout_set) { + ap_rprintf(r, + " %" APR_TIME_T_FMT "", + apr_time_msec(worker->s->ping_timeout)); + } + } + if (worker->s->disablereuse_set) { + ap_rprintf(r, + " %s\n", + (worker->s->disablereuse ? "On" : "Off")); + } + if (worker->s->conn_timeout_set) { + ap_rprintf(r, + " %" APR_TIME_T_FMT "\n", + apr_time_msec(worker->s->conn_timeout)); + } + if (worker->s->retry_set) { + ap_rprintf(r, + " %" APR_TIME_T_FMT "\n", + apr_time_sec(worker->s->retry)); + } ap_rputs(" \n", r); ++workers; }