summaryrefslogtreecommitdiff
path: root/modules/proxy
diff options
context:
space:
mode:
authorJoe Orton <jorton@apache.org>2017-08-18 08:49:42 +0000
committerJoe Orton <jorton@apache.org>2017-08-18 08:49:42 +0000
commit46b25893563c667aaa04f20f7ac0b191fd281fe0 (patch)
tree13a81cb4429ef673b53522d9408f86eaf369a7de /modules/proxy
parentba0bae43be65b5b02d42234aa0dcced271514feb (diff)
downloadhttpd-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.c9
-rw-r--r--modules/proxy/mod_proxy.h1
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;