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

mod_proxy: unfail mixed ProxyPass/<Proxy> and ProxyPassMatch/<ProxyMatch>.

It is not a failure in current 2.4.x, so to ease backport and to avoid compat
breakage simply warn about the second directive being ignored.

This commit can be reverted in trunk if we want next versions to fail in this
case.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879361 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Yann Ylavic
2020-06-30 12:15:41 +00:00
parent a979326d39
commit 3b20b2b9d1
2 changed files with 26 additions and 9 deletions

View File

@@ -2185,10 +2185,21 @@ static const char *
PROXY_COPY_CONF_PARAMS(worker, conf);
}
else if ((use_regex != 0) ^ (worker->s->is_name_matchable != 0)) {
return apr_pstrcat(cmd->temp_pool, "ProxyPass/<Proxy> and "
"ProxyPassMatch/<ProxyMatch> can't be used "
"together with the same worker name ",
"(", worker->s->name, ")", NULL);
ap_log_error(APLOG_MARK, APLOG_WARNING, 0, cmd->server, APLOGNO(10249)
"ProxyPass/<Proxy> and ProxyPassMatch/<ProxyMatch> "
"can't be used altogether with the same worker "
"name (%s); ignoring ProxyPass%s",
worker->s->name, use_regex ? "Match" : "");
/* Rollback new alias */
if (cmd->path) {
dconf->alias = NULL;
dconf->alias_set = 0;
}
else {
memset(new, 0, sizeof(*new));
apr_array_pop(conf->aliases);
}
return NULL;
}
else {
reuse = 1;
@@ -2955,10 +2966,15 @@ static const char *proxysection(cmd_parms *cmd, void *mconfig, const char *arg)
" ", err, NULL);
}
else if ((use_regex != 0) ^ (worker->s->is_name_matchable != 0)) {
return apr_pstrcat(cmd->temp_pool, "ProxyPass/<Proxy> and "
"ProxyPassMatch/<ProxyMatch> can't be used "
"altogether with the same worker name ",
"(", worker->s->name, ")", NULL);
ap_log_error(APLOG_MARK, APLOG_WARNING, 0, cmd->server, APLOGNO(10250)
"ProxyPass/<Proxy> and ProxyPassMatch/<ProxyMatch> "
"can't be used altogether with the same worker "
"name (%s); ignoring <Proxy%s>",
worker->s->name, use_regex ? "Match" : "");
/* Rollback new section */
((void **)sconf->sec_proxy->elts)[sconf->sec_proxy->nelts - 1] = NULL;
apr_array_pop(sconf->sec_proxy);
goto cleanup;
}
if (!worker->section_config) {
worker->section_config = new_dir_conf;
@@ -2989,6 +3005,7 @@ static const char *proxysection(cmd_parms *cmd, void *mconfig, const char *arg)
}
}
cleanup:
cmd->path = old_path;
cmd->override = old_overrides;