From aaf7e3eb4f21d3aec19381491470a5168a05904a Mon Sep 17 00:00:00 2001 From: Yann Ylavic Date: Tue, 23 Jun 2020 12:25:56 +0000 Subject: [PATCH] Follow up to r1879079: merge slashes (if configured to) before pre_trans There are few cases (if any) where multiple slashes have different semantics than a single one, and it's always been like that for proxy_trans anyway. This allows for better directory/location/if walk caching and is less confusing for their users. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879117 13f79535-47bb-0310-9956-ffa450edef68 --- server/request.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/server/request.c b/server/request.c index 26060d4e254..258b853633c 100644 --- a/server/request.c +++ b/server/request.c @@ -196,7 +196,10 @@ AP_DECLARE(int) ap_process_request_internal(request_rec *r) if (file_req) { /* File subrequests can have a relative path. */ - normalize_flags = AP_NORMALIZE_ALLOW_RELATIVE; + normalize_flags |= AP_NORMALIZE_ALLOW_RELATIVE; + } + if (sconf->merge_slashes != AP_CORE_CONFIG_OFF) { + normalize_flags |= AP_NORMALIZE_MERGE_SLASHES; } if (r->parsed_uri.path) { @@ -259,19 +262,11 @@ AP_DECLARE(int) ap_process_request_internal(request_rec *r) } if (d->allow_encoded_slashes && d->decode_encoded_slashes) { - /* Decoding slashes might have created new /./ and /../ - * segments (e.g. "/.%2F/"), so re-normalize. If asked to, - * merge slashes while at it. + /* Decoding slashes might have created new // or /./ or /../ + * segments (e.g. "/.%2F/"), so re-normalize. */ - if (sconf->merge_slashes != AP_CORE_CONFIG_OFF) { - normalize_flags |= AP_NORMALIZE_MERGE_SLASHES; - } ap_normalize_path(r->parsed_uri.path, normalize_flags); } - else if (sconf->merge_slashes != AP_CORE_CONFIG_OFF) { - /* We still didn't merged slashes yet, do it now. */ - ap_no2slash(r->parsed_uri.path); - } } /* Same, translate_name is not suited for file subrequests */