Engine::HTTP - Fix paths for HTTP requests with scheme and domain in URI.
[catagits/Catalyst-Runtime.git] / lib / Catalyst / DispatchType / Chained.pm
index 94a8a4c..ba488df 100644 (file)
@@ -233,7 +233,10 @@ sub recurse_match {
                     local $c->req->{arguments} = [ @{$c->req->args}, @parts ];
                     next TRY_ACTION unless $action->match($c);
                 }
+
+                # Default args is blank, not 0, since Args()
                 my $args_attr = $action->attributes->{Args}->[0];
+                $args_attr = '' unless defined $args_attr;
 
                 #    No best action currently
                 # OR This one matches with fewer parts left than the current best action,
@@ -353,9 +356,7 @@ sub uri_for_action {
         if (my $cap = $curr->attributes->{CaptureArgs}) {
             return undef unless @captures >= $cap->[0]; # not enough captures
             if ($cap->[0]) {
-                unshift(@parts,
-                    map { s/([^A-Za-z0-9\-_.!~*'()])/$URI::Escape::escapes{$1}/go; $_; }
-                    splice(@captures, -$cap->[0]));
+                unshift(@parts, splice(@captures, -$cap->[0]));
             }
         }
         if (my $pp = $curr->attributes->{PartPath}) {