diff --git a/docs/log-message-tags/next-number b/docs/log-message-tags/next-number index 5dae555dfb..fde32dc6d6 100644 --- a/docs/log-message-tags/next-number +++ b/docs/log-message-tags/next-number @@ -1 +1 @@ -10249 +10251 diff --git a/modules/proxy/mod_proxy.c b/modules/proxy/mod_proxy.c index d730a6d047..e40d8f8c87 100644 --- a/modules/proxy/mod_proxy.c +++ b/modules/proxy/mod_proxy.c @@ -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/ and " - "ProxyPassMatch/ 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/ and ProxyPassMatch/ " + "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/ and " - "ProxyPassMatch/ 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/ and ProxyPassMatch/ " + "can't be used altogether with the same worker " + "name (%s); ignoring ", + 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;