[Catalyst-commits] r13194 - in Catalyst-Runtime/5.80/trunk: . lib/Catalyst/Engine t/aggregate

t0m at dev.catalyst.perl.org t0m at dev.catalyst.perl.org
Sun May 2 23:27:43 GMT 2010


Author: t0m
Date: 2010-05-03 00:27:43 +0100 (Mon, 03 May 2010)
New Revision: 13194

Modified:
   Catalyst-Runtime/5.80/trunk/Changes
   Catalyst-Runtime/5.80/trunk/lib/Catalyst/Engine/CGI.pm
   Catalyst-Runtime/5.80/trunk/t/aggregate/unit_core_engine_cgi-prepare_path.t
Log:
Back out crazy heuristics

Modified: Catalyst-Runtime/5.80/trunk/Changes
===================================================================
--- Catalyst-Runtime/5.80/trunk/Changes	2010-05-02 23:16:25 UTC (rev 13193)
+++ Catalyst-Runtime/5.80/trunk/Changes	2010-05-02 23:27:43 UTC (rev 13194)
@@ -1,9 +1,6 @@
 # This file documents the revision history for Perl extension Catalyst.
 
   Bug fixes:
-   - Additional fix for getting the base application path right when rewriting
-     requests into an application sub path with mod_alias and mod_rewrite on
-     Apache.
    - Ensure to always cleanup temporary uploaded files in all cases, even
      when exceptions occur during request processing, using HTTP::Body's
      ->cleanup feature. (RT#41442)

Modified: Catalyst-Runtime/5.80/trunk/lib/Catalyst/Engine/CGI.pm
===================================================================
--- Catalyst-Runtime/5.80/trunk/lib/Catalyst/Engine/CGI.pm	2010-05-02 23:16:25 UTC (rev 13193)
+++ Catalyst-Runtime/5.80/trunk/lib/Catalyst/Engine/CGI.pm	2010-05-02 23:27:43 UTC (rev 13194)
@@ -128,7 +128,6 @@
     else {
         $base_path = $script_name || '/';
     }
-#    $base_path .= '/' unless $base_path =~ m{/$};
 
     # If we are running as a backend proxy, get the true hostname
   PROXY_CHECK:
@@ -158,15 +157,20 @@
     if (my $req_uri = $ENV{REQUEST_URI}) {
         $req_uri =~ s/^\Q$base_path\E//;
         $req_uri =~ s/\?.*$//;
-        if ($req_uri && $req_uri ne '/') {
+        if ($req_uri) {
+            # Note that if REQUEST_URI doesn't start with a /, then the user
+            # is probably using mod_rewrite or something to rewrite requests
+            # into a sub-path of their application..
             # This means that REQUEST_URI needs information from PATH_INFO
             # prepending to it to be useful, otherwise the sub path which is
             # being redirected to becomes the app base address which is
             # incorrect.
-            my ($match) = $req_uri =~ m{^(/?[^/]+)};
-            my ($path_info_part) = $path_info =~ m|^(.*?\Q$match\E)|;
-            substr($req_uri, 0, length($match), $path_info_part)
-                if $path_info_part;
+            if (substr($req_uri, 0, 1) ne '/') {
+                my ($match) = $req_uri =~ m|^([^/]+)|;
+                my ($path_info_part) = $path_info =~ m|^(.*?\Q$match\E)|;
+                substr($req_uri, 0, length($match), $path_info_part)
+                    if $path_info_part;
+            }
             $path_info = $req_uri;
         }
     }

Modified: Catalyst-Runtime/5.80/trunk/t/aggregate/unit_core_engine_cgi-prepare_path.t
===================================================================
--- Catalyst-Runtime/5.80/trunk/t/aggregate/unit_core_engine_cgi-prepare_path.t	2010-05-02 23:16:25 UTC (rev 13193)
+++ Catalyst-Runtime/5.80/trunk/t/aggregate/unit_core_engine_cgi-prepare_path.t	2010-05-02 23:27:43 UTC (rev 13194)
@@ -87,6 +87,7 @@
 }
 
 {
+    local $TODO = 'Another mod_rewrite case';
     my $r = get_req (
         PATH_INFO => '/auth/login',
         SCRIPT_NAME => '/tx',




More information about the Catalyst-commits mailing list