diff options
author | Joe Orton <jorton@apache.org> | 2017-08-18 08:49:42 +0000 |
---|---|---|
committer | Joe Orton <jorton@apache.org> | 2017-08-18 08:49:42 +0000 |
commit | 46b25893563c667aaa04f20f7ac0b191fd281fe0 (patch) | |
tree | 13a81cb4429ef673b53522d9408f86eaf369a7de /modules/proxy | |
parent | ba0bae43be65b5b02d42234aa0dcced271514feb (diff) | |
download | httpd-46b25893563c667aaa04f20f7ac0b191fd281fe0.tar.gz |
Merge 1805099 from trunk:
Fix ProxyAddHeaders merging.
* modules/proxy/mod_proxy.h:
Add add_forwarded_headers_set field to proxy_dir_conf.
* modules/proxy/mod_proxy.c (create_proxy_dir_config):
Initialize add_forwarded_headers_set.
(add_proxy_http_headers): Set it.
(merge_proxy_dir_config): Merge add_forwarded_headers correctly.
Reviewed by: jorton, rpluem, jim
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1805390 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'modules/proxy')
-rw-r--r-- | modules/proxy/mod_proxy.c | 9 | ||||
-rw-r--r-- | modules/proxy/mod_proxy.h | 1 |
2 files changed, 9 insertions, 1 deletions
diff --git a/modules/proxy/mod_proxy.c b/modules/proxy/mod_proxy.c index f6fb473ed1..9f5a3ae279 100644 --- a/modules/proxy/mod_proxy.c +++ b/modules/proxy/mod_proxy.c @@ -1451,6 +1451,7 @@ static void *create_proxy_dir_config(apr_pool_t *p, char *dummy) new->error_override = 0; new->error_override_set = 0; new->add_forwarded_headers = 1; + new->add_forwarded_headers_set = 0; return (void *) new; } @@ -1482,7 +1483,12 @@ static void *merge_proxy_dir_config(apr_pool_t *p, void *basev, void *addv) new->error_override_set = add->error_override_set || base->error_override_set; new->alias = (add->alias_set == 0) ? base->alias : add->alias; new->alias_set = add->alias_set || base->alias_set; - new->add_forwarded_headers = add->add_forwarded_headers; + new->add_forwarded_headers = + (add->add_forwarded_headers_set == 0) ? base->add_forwarded_headers + : add->add_forwarded_headers; + new->add_forwarded_headers_set = add->add_forwarded_headers_set + || base->add_forwarded_headers_set; + return new; } @@ -1970,6 +1976,7 @@ static const char * { proxy_dir_conf *conf = dconf; conf->add_forwarded_headers = flag; + conf->add_forwarded_headers_set = 1; return NULL; } static const char * diff --git a/modules/proxy/mod_proxy.h b/modules/proxy/mod_proxy.h index 8a0ad10259..4f31bed389 100644 --- a/modules/proxy/mod_proxy.h +++ b/modules/proxy/mod_proxy.h @@ -235,6 +235,7 @@ typedef struct { unsigned int error_override_set:1; unsigned int alias_set:1; unsigned int add_forwarded_headers:1; + unsigned int add_forwarded_headers_set:1; /** Named back references */ apr_array_header_t *refs; |