status can be changed via editing httpd.conf instead
just using web page. Seems the ApacheCon is paying of.
Thanks to Sander for pointing that out.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@225751
13f79535-47bb-0310-9956-
ffa450edef68
return "Redirect length must be < 64 characters";
worker->redirect = apr_pstrdup(p, val);
}
+ else if (!strcasecmp(key, "status")) {
+ const char *v;
+ int mode = 1;
+ /* Worker status.
+ */
+ for (v = val; *v; v++) {
+ if (*v == '+') {
+ mode = 1;
+ v++;
+ }
+ else if (*v == '-') {
+ mode = 0;
+ v++;
+ }
+ if (*v == 'D' || *v == 'd') {
+ if (mode)
+ worker->status |= PROXY_WORKER_DISABLED;
+ else
+ worker->status &= ~PROXY_WORKER_DISABLED;
+ }
+ else if (*v == 'S' || *v == 's') {
+ if (mode)
+ worker->status |= PROXY_WORKER_STOPPED;
+ else
+ worker->status &= ~PROXY_WORKER_STOPPED;
+ }
+ else if (*v == 'E' || *v == 'e') {
+ if (mode)
+ worker->status |= PROXY_WORKER_IN_ERROR;
+ else
+ worker->status &= ~PROXY_WORKER_IN_ERROR;
+ }
+ else {
+ return "Unknow status parameter option";
+ }
+ }
+ }
else {
return "unknown Worker parameter";
}
#define PROXY_WORKER_IGNORE_ERRORS 0x0002
#define PROXY_WORKER_IN_SHUTDOWN 0x0010
#define PROXY_WORKER_DISABLED 0x0020
-#define PROXY_WORKER_IN_ERROR 0x0040
+#define PROXY_WORKER_STOPPED 0x0040
+#define PROXY_WORKER_IN_ERROR 0x0080
#define PROXY_WORKER_IS_USABLE(f) (!((f)->s->status & 0x00F0))
const char *hostname; /* remote backend address */
const char *route; /* balancing route */
const char *redirect; /* temporary balancing redirection route */
+ int status; /* temporary worker status */
apr_port_t port;
int min; /* Desired minimum number of available connections */
int smax; /* Soft maximum on the total number of connections */
worker->id, getpid(), worker->hostname);
}
if (rv == APR_SUCCESS)
- worker->s->status |= PROXY_WORKER_INITIALIZED;
+ worker->s->status |= (worker->status | PROXY_WORKER_INITIALIZED);
return rv;
}