1
0
mirror of https://github.com/apache/httpd.git synced 2025-08-08 15:02:10 +03:00

ProxyPass ! doesn't block per-directory ProxyPass

*) mod_proxy: Honor a server scoped ProxyPass exception when ProxyPass is
     configured in <Location>, like in 2.2. PR 60458.
     [Eric Covener]


reverted in r1781324


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1773397 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Eric Covener
2016-12-09 14:00:51 +00:00
parent cc996f2bf3
commit ff7722bc9a
2 changed files with 20 additions and 5 deletions

View File

@@ -1,6 +1,10 @@
-*- coding: utf-8 -*- -*- coding: utf-8 -*-
Changes with Apache 2.5.0 Changes with Apache 2.5.0
*) mod_proxy: Honor a server scoped ProxyPass exception when ProxyPass is
configured in <Location>, like in 2.2. PR 60458.
[Eric Covener]
*) core: Drop Content-Length header and message-body from HTTP 204 responses. *) core: Drop Content-Length header and message-body from HTTP 204 responses.
PR 51350 [Luca Toscano] PR 51350 [Luca Toscano]

View File

@@ -788,18 +788,29 @@ static int proxy_trans(request_rec *r)
*/ */
dconf = ap_get_module_config(r->per_dir_config, &proxy_module); dconf = ap_get_module_config(r->per_dir_config, &proxy_module);
conf = (proxy_server_conf *) ap_get_module_config(r->server->module_config,
&proxy_module);
/* short way - this location is reverse proxied? */ /* short way - this location is reverse proxied? */
if (dconf->alias) { if (dconf->alias) {
int rv = ap_proxy_trans_match(r, dconf->alias, dconf); int rv = ap_proxy_trans_match(r, dconf->alias, dconf);
if (OK == rv) {
/* Got a hit. Need to make sure it's not explicitly declined */
if (conf->aliases->nelts) {
ent = (struct proxy_alias *) conf->aliases->elts;
for (i = 0; i < conf->aliases->nelts; i++) {
int rv = ap_proxy_trans_match(r, &ent[i], dconf);
if (DECLINED == rv) {
return DECLINED;
}
}
}
return OK;
}
if (DONE != rv) { if (DONE != rv) {
return rv; return rv;
} }
} }
conf = (proxy_server_conf *) ap_get_module_config(r->server->module_config,
&proxy_module);
/* long way - walk the list of aliases, find a match */ /* long way - walk the list of aliases, find a match */
if (conf->aliases->nelts) { if (conf->aliases->nelts) {
ent = (struct proxy_alias *) conf->aliases->elts; ent = (struct proxy_alias *) conf->aliases->elts;