]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Follow up to r1879079: merge slashes (if configured to) before pre_trans
authorYann Ylavic <ylavic@apache.org>
Tue, 23 Jun 2020 12:25:56 +0000 (12:25 +0000)
committerYann Ylavic <ylavic@apache.org>
Tue, 23 Jun 2020 12:25:56 +0000 (12:25 +0000)
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

index 26060d4e254f5b658785032bd2c39be9414cdf70..258b853633cdcae9b8f0aefd59d06a97bf34ebb7 100644 (file)
@@ -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 */