Fixed uri handling in MP engines. Updated Changes
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Engine / Apache / MP13.pm
index 27066c3..b0a7d1c 100644 (file)
@@ -26,7 +26,7 @@ and C<Catalyst::Engine::CGI>.
 
 =cut
 
-sub prepare_body { 
+sub prepare_body {
     shift->Catalyst::Engine::CGI::prepare_body(@_);
 }
 
@@ -34,7 +34,7 @@ sub prepare_body {
 
 =cut
 
-sub prepare_parameters { 
+sub prepare_parameters {
     shift->Catalyst::Engine::CGI::prepare_parameters(@_);
 }
 
@@ -44,11 +44,23 @@ sub prepare_parameters {
 
 sub prepare_request {
     my ( $c, $r, @arguments ) = @_;
-    
-    $ENV{CONTENT_TYPE}   = $r->header_in("Content-Type");
-    $ENV{CONTENT_LENGTH} = $r->header_in("Content-Length");
-    $ENV{QUERY_STRING}   = $r->args;
-    $ENV{REQUEST_METHOD} = $r->method;
+
+    unless ( $ENV{REQUEST_METHOD} ) {
+
+        $ENV{CONTENT_TYPE}   = $r->header_in("Content-Type");
+        $ENV{CONTENT_LENGTH} = $r->header_in("Content-Length");
+        $ENV{QUERY_STRING}   = $r->args;
+        $ENV{REQUEST_METHOD} = $r->method;
+
+        my $cleanup = sub {
+            delete( $ENV{$_} ) for qw( CONTENT_TYPE
+                                       CONTENT_LENGTH
+                                       QUERY_STRING
+                                       REQUEST_METHOD );
+        };
+
+        $r->register_cleanup($cleanup);
+    }
 
     $c->SUPER::prepare_request($r);
     $c->Catalyst::Engine::CGI::prepare_request( $r, @arguments );
@@ -58,7 +70,7 @@ sub prepare_request {
 
 =cut
 
-sub prepare_uploads { 
+sub prepare_uploads {
     shift->Catalyst::Engine::CGI::prepare_uploads(@_);
 }