From: Rainer Jung Date: Fri, 14 Dec 2012 15:02:30 +0000 (+0000) Subject: Use inherit_set to let the global server set X-Git-Tag: 2.5.0-alpha~6005 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b63656829c1c9c53898061af30a0e9531dd02a3a;p=thirdparty%2Fapache%2Fhttpd.git Use inherit_set to let the global server set the default for all vhosts. Otherwise inherit would need to be disabled redundantly in each vhost. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1421912 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/docs/manual/mod/mod_proxy.xml b/docs/manual/mod/mod_proxy.xml index 8dd5e50dc6b..e92275f0479 100644 --- a/docs/manual/mod/mod_proxy.xml +++ b/docs/manual/mod/mod_proxy.xml @@ -1208,6 +1208,7 @@ ProxyPass / balancer://hotcluster/ Balancers and Workers defined in the main server. This can cause issues and inconsistent behavior if using the Balancer Manager and so should be disabled if using that feature.

+

The setting in the global server defines the default for all vhosts.

diff --git a/modules/proxy/mod_proxy.c b/modules/proxy/mod_proxy.c index 7f2992c146e..dee15bc0d5e 100644 --- a/modules/proxy/mod_proxy.c +++ b/modules/proxy/mod_proxy.c @@ -1161,6 +1161,7 @@ static void * create_proxy_config(apr_pool_t *p, server_rec *s) ps->max_balancers = 0; ps->bal_persist = 0; ps->inherit = 1; + ps->inherit_set = 0; ps->bgrowth = 5; ps->bgrowth_set = 0; ps->req_set = 0; @@ -1187,7 +1188,10 @@ static void * merge_proxy_config(apr_pool_t *p, void *basev, void *overridesv) proxy_server_conf *base = (proxy_server_conf *) basev; proxy_server_conf *overrides = (proxy_server_conf *) overridesv; - if (overrides->inherit || base->inherit) { + ps->inherit = (overrides->inherit_set == 0) ? base->inherit : overrides->inherit; + ps->inherit_set = overrides->inherit_set || base->inherit_set; + + if (ps->inherit) { ps->proxies = apr_array_append(p, base->proxies, overrides->proxies); ps->sec_proxy = apr_array_append(p, base->sec_proxy, overrides->sec_proxy); ps->aliases = apr_array_append(p, base->aliases, overrides->aliases); @@ -1218,7 +1222,6 @@ static void * merge_proxy_config(apr_pool_t *p, void *basev, void *overridesv) ps->bgrowth_set = overrides->bgrowth_set || base->bgrowth_set; ps->max_balancers = overrides->max_balancers || base->max_balancers; ps->bal_persist = overrides->bal_persist; - ps->inherit = overrides->inherit || base->inherit; ps->recv_buffer_size = (overrides->recv_buffer_size_set == 0) ? base->recv_buffer_size : overrides->recv_buffer_size; ps->recv_buffer_size_set = overrides->recv_buffer_size_set || base->recv_buffer_size_set; ps->io_buffer_size = (overrides->io_buffer_size_set == 0) ? base->io_buffer_size : overrides->io_buffer_size; @@ -1909,6 +1912,7 @@ static const char *set_inherit(cmd_parms *parms, void *dummy, int flag) ap_get_module_config(parms->server->module_config, &proxy_module); psf->inherit = flag; + psf->inherit_set = 1; return NULL; } diff --git a/modules/proxy/mod_proxy.h b/modules/proxy/mod_proxy.h index 17031a1bd28..3df74bc0bc8 100644 --- a/modules/proxy/mod_proxy.h +++ b/modules/proxy/mod_proxy.h @@ -179,6 +179,7 @@ typedef struct { unsigned int source_address_set:1; unsigned int bgrowth_set:1; unsigned int inherit:1; + unsigned int inherit_set:1; unsigned int bal_persist:1; } proxy_server_conf;