From 25ef591ed61cb281e0c88d6c4af1160f871c7387 Mon Sep 17 00:00:00 2001 From: Yann Ylavic Date: Sat, 27 Jul 2024 13:54:08 +0000 Subject: [PATCH] mod_proxy_fcgi: Use r->uri rather than r->filename for directory walk. r->filename is a "proxy:" one for mod_proxy modules, and ap_directory_walk() can't cope with that, so force r->uri. Github: closes #468 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1919547 13f79535-47bb-0310-9956-ffa450edef68 --- modules/proxy/mod_proxy_fcgi.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/proxy/mod_proxy_fcgi.c b/modules/proxy/mod_proxy_fcgi.c index d121e1b2bf5..bb56cf0a45b 100644 --- a/modules/proxy/mod_proxy_fcgi.c +++ b/modules/proxy/mod_proxy_fcgi.c @@ -133,7 +133,6 @@ static int proxy_fcgi_canon(request_rec *r, char *url) /* It has to be on disk for this to work */ if (!strcasecmp(pathinfo_type, "full")) { rconf->need_dirwalk = 1; - ap_unescape_url_keep2f(path, 0); } else if (!strcasecmp(pathinfo_type, "first-dot")) { char *split = ap_strchr(path, '.'); @@ -348,10 +347,11 @@ static apr_status_t send_environment(proxy_conn_rec *conn, request_rec *r, fcgi_req_config_t *rconf = ap_get_module_config(r->request_config, &proxy_fcgi_module); fcgi_dirconf_t *dconf = ap_get_module_config(r->per_dir_config, &proxy_fcgi_module); - if (rconf) { - if (rconf->need_dirwalk) { - ap_directory_walk(r); - } + if (rconf && rconf->need_dirwalk) { + char *saved_filename = r->filename; + r->filename = r->uri; + ap_directory_walk(r); + r->filename = saved_filename; } /* Strip proxy: prefixes */