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