Loading modules/proxy/mod_proxy.c +1 −1 Changes for modules/proxy/mod_proxy.c: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -210,7 +210,7 @@ static const char *set_worker_param(apr_pool_t *p, mode = 0; v++; } rv = ap_proxy_set_wstatus(*v, mode, &worker->s->status); rv = ap_proxy_set_wstatus(*v, mode, worker); if (rv != APR_SUCCESS) return "Unknown status parameter option"; } Loading modules/proxy/mod_proxy.h +11 −2 Changes for modules/proxy/mod_proxy.h: 11 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -826,10 +826,19 @@ PROXY_DECLARE(unsigned int) ap_proxy_hashfunc(const char *str, proxy_hash_t meth * Set/unset the worker status bitfield depending on flag * @param c flag * @param set set or unset bit * @param status bitfield to use * @param w worker to use * @return APR_SUCCESS if valid flag */ PROXY_DECLARE(apr_status_t) ap_proxy_set_wstatus(char c, int set, unsigned int *status); PROXY_DECLARE(apr_status_t) ap_proxy_set_wstatus(char c, int set, proxy_worker *w); /** * Create readable representation of worker status bitfield * @param p pool * @param w worker to use * @return string representation of status */ PROXY_DECLARE(char *) ap_proxy_parse_wstatus(apr_pool_t *p, proxy_worker *w); #define PROXY_LBMETHOD "proxylbmethod" Loading modules/proxy/mod_proxy_balancer.c +1 −12 Changes for modules/proxy/mod_proxy_balancer.c: 1 added line, 12 removed lines. Original line number Diff line number Diff line Loading @@ -1046,18 +1046,7 @@ static int balancer_handler(request_rec *r) ap_escape_html(r->pool, worker->s->redirect), NULL); ap_rprintf(r, "</td><td align=\"center\">%d</td>", worker->s->lbfactor); ap_rprintf(r, "<td align=\"center\">%d</td><td align=\"center\">", worker->s->lbset); if (worker->s->status & PROXY_WORKER_DISABLED) ap_rputs("Dis ", r); if (worker->s->status & PROXY_WORKER_IN_ERROR) ap_rputs("Err ", r); if (worker->s->status & PROXY_WORKER_STOPPED) ap_rputs("Stop ", r); if (worker->s->status & PROXY_WORKER_HOT_STANDBY) ap_rputs("Stby ", r); if (PROXY_WORKER_IS_USABLE(worker)) ap_rputs("Ok", r); if (!PROXY_WORKER_IS_INITIALIZED(worker)) ap_rputs("-", r); ap_rvputs(r, ap_proxy_parse_wstatus(r->pool, worker), NULL); ap_rputs("</td>", r); ap_rprintf(r, "<td align=\"center\">%" APR_SIZE_T_FMT "</td><td align=\"center\">", worker->s->elected); ap_rputs(apr_strfsize(worker->s->transferred, fbuf), r); Loading modules/proxy/proxy_util.c +58 −4 Changes for modules/proxy/proxy_util.c: 58 added lines, 4 removed lines. Original line number Diff line number Diff line Loading @@ -2834,10 +2834,35 @@ ap_proxy_hashfunc(const char *str, proxy_hash_t method) } } PROXY_DECLARE(apr_status_t) ap_proxy_set_wstatus(const char c, int set, unsigned int *status) PROXY_DECLARE(apr_status_t) ap_proxy_set_wstatus(const char c, int set, proxy_worker *w) { unsigned int *status = &w->s->status; char bit = toupper(c); switch (bit) { case PROXY_WORKER_INITIALIZED_FLAG : if (set) *status |= PROXY_WORKER_INITIALIZED; else *status &= ~PROXY_WORKER_INITIALIZED; break; case PROXY_WORKER_IGNORE_ERRORS_FLAG : if (set) *status |= PROXY_WORKER_IGNORE_ERRORS; else *status &= ~PROXY_WORKER_IGNORE_ERRORS; break; case PROXY_WORKER_DRAIN_FLAG : if (set) *status |= PROXY_WORKER_DRAIN; else *status &= ~PROXY_WORKER_DRAIN; break; case PROXY_WORKER_IN_SHUTDOWN_FLAG : if (set) *status |= PROXY_WORKER_IN_SHUTDOWN; else *status &= ~PROXY_WORKER_IN_SHUTDOWN; break; case PROXY_WORKER_DISABLED_FLAG : if (set) *status |= PROXY_WORKER_DISABLED; Loading @@ -2862,11 +2887,11 @@ PROXY_DECLARE(apr_status_t) ap_proxy_set_wstatus(const char c, int set, unsigned else *status &= ~PROXY_WORKER_HOT_STANDBY; break; case PROXY_WORKER_IGNORE_ERRORS_FLAG : case PROXY_WORKER_FREE_FLAG : if (set) *status |= PROXY_WORKER_IGNORE_ERRORS; *status |= PROXY_WORKER_FREE; else *status &= ~PROXY_WORKER_IGNORE_ERRORS; *status &= ~PROXY_WORKER_FREE; break; default: return APR_EINVAL; Loading @@ -2874,3 +2899,32 @@ PROXY_DECLARE(apr_status_t) ap_proxy_set_wstatus(const char c, int set, unsigned } return APR_SUCCESS; } PROXY_DECLARE(char *) ap_proxy_parse_wstatus(apr_pool_t *p, proxy_worker *w) { char *ret = NULL; unsigned int status = w->s->status; if (status & PROXY_WORKER_INITIALIZED) ret = apr_pstrcat(p, "Init ", NULL); else ret = apr_pstrcat(p, "!Init ", NULL); if (status & PROXY_WORKER_IGNORE_ERRORS) ret = apr_pstrcat(p, ret, "Ign ", NULL); if (status & PROXY_WORKER_DRAIN) ret = apr_pstrcat(p, ret, "Drn ", NULL); if (status & PROXY_WORKER_IN_SHUTDOWN) ret = apr_pstrcat(p, ret, "Shut ", NULL); if (status & PROXY_WORKER_DISABLED) ret = apr_pstrcat(p, ret, "Dis ", NULL); if (status & PROXY_WORKER_STOPPED) ret = apr_pstrcat(p, ret, "Stop ", NULL); if (status & PROXY_WORKER_IN_ERROR) ret = apr_pstrcat(p, ret, "Err ", NULL); if (status & PROXY_WORKER_HOT_STANDBY) ret = apr_pstrcat(p, ret, "Stby ", NULL); if (status & PROXY_WORKER_FREE) ret = apr_pstrcat(p, ret, "Free ", NULL); if (PROXY_WORKER_IS_USABLE(w)) ret = apr_pstrcat(p, ret, "Ok ", NULL); return ret; } Loading
modules/proxy/mod_proxy.c +1 −1 Changes for modules/proxy/mod_proxy.c: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -210,7 +210,7 @@ static const char *set_worker_param(apr_pool_t *p, mode = 0; v++; } rv = ap_proxy_set_wstatus(*v, mode, &worker->s->status); rv = ap_proxy_set_wstatus(*v, mode, worker); if (rv != APR_SUCCESS) return "Unknown status parameter option"; } Loading
modules/proxy/mod_proxy.h +11 −2 Changes for modules/proxy/mod_proxy.h: 11 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -826,10 +826,19 @@ PROXY_DECLARE(unsigned int) ap_proxy_hashfunc(const char *str, proxy_hash_t meth * Set/unset the worker status bitfield depending on flag * @param c flag * @param set set or unset bit * @param status bitfield to use * @param w worker to use * @return APR_SUCCESS if valid flag */ PROXY_DECLARE(apr_status_t) ap_proxy_set_wstatus(char c, int set, unsigned int *status); PROXY_DECLARE(apr_status_t) ap_proxy_set_wstatus(char c, int set, proxy_worker *w); /** * Create readable representation of worker status bitfield * @param p pool * @param w worker to use * @return string representation of status */ PROXY_DECLARE(char *) ap_proxy_parse_wstatus(apr_pool_t *p, proxy_worker *w); #define PROXY_LBMETHOD "proxylbmethod" Loading
modules/proxy/mod_proxy_balancer.c +1 −12 Changes for modules/proxy/mod_proxy_balancer.c: 1 added line, 12 removed lines. Original line number Diff line number Diff line Loading @@ -1046,18 +1046,7 @@ static int balancer_handler(request_rec *r) ap_escape_html(r->pool, worker->s->redirect), NULL); ap_rprintf(r, "</td><td align=\"center\">%d</td>", worker->s->lbfactor); ap_rprintf(r, "<td align=\"center\">%d</td><td align=\"center\">", worker->s->lbset); if (worker->s->status & PROXY_WORKER_DISABLED) ap_rputs("Dis ", r); if (worker->s->status & PROXY_WORKER_IN_ERROR) ap_rputs("Err ", r); if (worker->s->status & PROXY_WORKER_STOPPED) ap_rputs("Stop ", r); if (worker->s->status & PROXY_WORKER_HOT_STANDBY) ap_rputs("Stby ", r); if (PROXY_WORKER_IS_USABLE(worker)) ap_rputs("Ok", r); if (!PROXY_WORKER_IS_INITIALIZED(worker)) ap_rputs("-", r); ap_rvputs(r, ap_proxy_parse_wstatus(r->pool, worker), NULL); ap_rputs("</td>", r); ap_rprintf(r, "<td align=\"center\">%" APR_SIZE_T_FMT "</td><td align=\"center\">", worker->s->elected); ap_rputs(apr_strfsize(worker->s->transferred, fbuf), r); Loading
modules/proxy/proxy_util.c +58 −4 Changes for modules/proxy/proxy_util.c: 58 added lines, 4 removed lines. Original line number Diff line number Diff line Loading @@ -2834,10 +2834,35 @@ ap_proxy_hashfunc(const char *str, proxy_hash_t method) } } PROXY_DECLARE(apr_status_t) ap_proxy_set_wstatus(const char c, int set, unsigned int *status) PROXY_DECLARE(apr_status_t) ap_proxy_set_wstatus(const char c, int set, proxy_worker *w) { unsigned int *status = &w->s->status; char bit = toupper(c); switch (bit) { case PROXY_WORKER_INITIALIZED_FLAG : if (set) *status |= PROXY_WORKER_INITIALIZED; else *status &= ~PROXY_WORKER_INITIALIZED; break; case PROXY_WORKER_IGNORE_ERRORS_FLAG : if (set) *status |= PROXY_WORKER_IGNORE_ERRORS; else *status &= ~PROXY_WORKER_IGNORE_ERRORS; break; case PROXY_WORKER_DRAIN_FLAG : if (set) *status |= PROXY_WORKER_DRAIN; else *status &= ~PROXY_WORKER_DRAIN; break; case PROXY_WORKER_IN_SHUTDOWN_FLAG : if (set) *status |= PROXY_WORKER_IN_SHUTDOWN; else *status &= ~PROXY_WORKER_IN_SHUTDOWN; break; case PROXY_WORKER_DISABLED_FLAG : if (set) *status |= PROXY_WORKER_DISABLED; Loading @@ -2862,11 +2887,11 @@ PROXY_DECLARE(apr_status_t) ap_proxy_set_wstatus(const char c, int set, unsigned else *status &= ~PROXY_WORKER_HOT_STANDBY; break; case PROXY_WORKER_IGNORE_ERRORS_FLAG : case PROXY_WORKER_FREE_FLAG : if (set) *status |= PROXY_WORKER_IGNORE_ERRORS; *status |= PROXY_WORKER_FREE; else *status &= ~PROXY_WORKER_IGNORE_ERRORS; *status &= ~PROXY_WORKER_FREE; break; default: return APR_EINVAL; Loading @@ -2874,3 +2899,32 @@ PROXY_DECLARE(apr_status_t) ap_proxy_set_wstatus(const char c, int set, unsigned } return APR_SUCCESS; } PROXY_DECLARE(char *) ap_proxy_parse_wstatus(apr_pool_t *p, proxy_worker *w) { char *ret = NULL; unsigned int status = w->s->status; if (status & PROXY_WORKER_INITIALIZED) ret = apr_pstrcat(p, "Init ", NULL); else ret = apr_pstrcat(p, "!Init ", NULL); if (status & PROXY_WORKER_IGNORE_ERRORS) ret = apr_pstrcat(p, ret, "Ign ", NULL); if (status & PROXY_WORKER_DRAIN) ret = apr_pstrcat(p, ret, "Drn ", NULL); if (status & PROXY_WORKER_IN_SHUTDOWN) ret = apr_pstrcat(p, ret, "Shut ", NULL); if (status & PROXY_WORKER_DISABLED) ret = apr_pstrcat(p, ret, "Dis ", NULL); if (status & PROXY_WORKER_STOPPED) ret = apr_pstrcat(p, ret, "Stop ", NULL); if (status & PROXY_WORKER_IN_ERROR) ret = apr_pstrcat(p, ret, "Err ", NULL); if (status & PROXY_WORKER_HOT_STANDBY) ret = apr_pstrcat(p, ret, "Stby ", NULL); if (status & PROXY_WORKER_FREE) ret = apr_pstrcat(p, ret, "Free ", NULL); if (PROXY_WORKER_IS_USABLE(w)) ret = apr_pstrcat(p, ret, "Ok ", NULL); return ret; }