Index: docs/manual/mod/mod_proxy.xml =================================================================== --- docs/manual/mod/mod_proxy.xml (revision 1125463) +++ docs/manual/mod/mod_proxy.xml (working copy) @@ -922,7 +922,8 @@ - Single letter value defining the initial status of this worker: 'D' is disabled, 'S' is stopped, 'I' is ignore-errors, - 'H' is hot-standby and 'E' is in an error state. Status + 'H' is hot-standby, 'R' is route-only to only accept requests with + sticky session routes, and 'E' is in an error state. Status can be set (which is the default) by prepending with '+' or cleared by prepending with '-'. Thus, a setting of 'S-E' sets this worker to Stopped and Index: modules/proxy/mod_proxy.c =================================================================== --- modules/proxy/mod_proxy.c (revision 1125463) +++ modules/proxy/mod_proxy.c (working copy) @@ -238,6 +238,12 @@ else worker->status &= ~PROXY_WORKER_IGNORE_ERRORS; } + else if (*v == 'R' || *v == 'r') { + if (mode) + worker->status |= PROXY_WORKER_ROUTE_ONLY; + else + worker->status &= ~PROXY_WORKER_ROUTE_ONLY; + } else { return "Unknown status parameter option"; } Index: modules/proxy/mod_proxy.h =================================================================== --- modules/proxy/mod_proxy.h (revision 1125463) +++ modules/proxy/mod_proxy.h (working copy) @@ -273,6 +273,7 @@ #define PROXY_WORKER_STOPPED 0x0040 #define PROXY_WORKER_IN_ERROR 0x0080 #define PROXY_WORKER_HOT_STANDBY 0x0100 +#define PROXY_WORKER_ROUTE_ONLY 0x0200 #define PROXY_WORKER_NOT_USABLE_BITMAP ( PROXY_WORKER_IN_SHUTDOWN | \ PROXY_WORKER_DISABLED | PROXY_WORKER_STOPPED | PROXY_WORKER_IN_ERROR ) @@ -288,6 +289,9 @@ ( !( (f)->s->status & PROXY_WORKER_NOT_USABLE_BITMAP) ) && \ PROXY_WORKER_IS_INITIALIZED(f) ) +#define PROXY_WORKER_IS_ROUTE_ONLY(f) ( (f)->s && \ + ( (f)->s->status & PROXY_WORKER_ROUTE_ONLY ) ) + /* default worker retry timeout in seconds */ #define PROXY_WORKER_DEFAULT_RETRY 60 #define PROXY_WORKER_MAX_ROUTE_SIZ 63 Index: modules/proxy/mod_proxy_balancer.c =================================================================== --- modules/proxy/mod_proxy_balancer.c (revision 1125463) +++ modules/proxy/mod_proxy_balancer.c (working copy) @@ -776,6 +776,12 @@ else if (!strcasecmp(val, "Enable")) wsel->s->status &= ~PROXY_WORKER_DISABLED; } + if ((val = apr_table_get(params, "rt"))) { + if (!strcasecmp(val, "Disable")) + wsel->s->status &= ~PROXY_WORKER_ROUTE_ONLY; + else if (!strcasecmp(val, "Enable")) + wsel->s->status |= PROXY_WORKER_ROUTE_ONLY; + } if ((val = apr_table_get(params, "ls"))) { int ival = atoi(val); if (ival >= 0 && ival <= 99) { @@ -873,6 +879,8 @@ ap_rputs("Stop ", r); if (worker->s->status & PROXY_WORKER_HOT_STANDBY) ap_rputs("Stby ", r); + if (worker->s->status & PROXY_WORKER_ROUTE_ONLY) + ap_rputs("Rto ", r); if (PROXY_WORKER_IS_USABLE(worker)) ap_rputs("Ok", r); if (!PROXY_WORKER_IS_INITIALIZED(worker)) @@ -913,6 +921,13 @@ ap_rputs("> | Enabled: s->status & PROXY_WORKER_DISABLED)) ap_rputs(" checked", r); + ap_rputs("\">\n", r); + ap_rputs("Route-Only:Disabled: s->status & PROXY_WORKER_ROUTE_ONLY)) + ap_rputs(" checked", r); + ap_rputs("> | Enabled: s->status & PROXY_WORKER_ROUTE_ONLY) + ap_rputs(" checked", r); ap_rputs(">\n", r); ap_rputs("\n", r); ap_rvputs(r, "\n