X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FRequest.pm;h=87ce66a22119de587f0602f97a7b600ab2dc5927;hb=e72a3cd6e12d8b9594dcfdddf13c1fbabdffb900;hp=5de7635bd3486397469ab0035819d8dcadd4f30c;hpb=bd822b43dc37efc75451d0f784afb329c173a0d6;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Request.pm b/lib/Catalyst/Request.pm index 5de7635..87ce66a 100644 --- a/lib/Catalyst/Request.pm +++ b/lib/Catalyst/Request.pm @@ -103,6 +103,9 @@ has io_fh => ( sub _build_io_fh { my $self = shift; return $self->env->{'psgix.io'} + || ( + $self->env->{'net.async.http.server.req'} && + $self->env->{'net.async.http.server.req'}->stream) ## Until I can make ioasync cabal see the value of supportin psgix.io (jnap) || die "Your Server does not support psgix.io"; }; @@ -128,6 +131,11 @@ sub _build_body_data { } } +has _use_hash_multivalue => ( + is=>'ro', + required=>1, + default=> sub {0}); + # Amount of data to read from input on each pass our $CHUNKSIZE = 64 * 1024; @@ -209,6 +217,10 @@ sub _build_parameters { Hash::MultiValue->new($query->flatten, $body->flatten); }; + if($self->_use_hash_multivalue) { + return $self->env->{'plack.request.merged'}->clone; # We want a copy, in case your App is evil + } + # We copy, no references foreach my $name (keys %$query_parameters) { my $param = $query_parameters->{$name}; @@ -322,7 +334,9 @@ sub prepare_body_parameters { $self->prepare_body if ! $self->_has_body; return {} unless $self->_body; - return $self->_body->param; + return $self->_use_hash_multivalue ? + $self->env->{'plack.request.body'}->clone : + $self->_body->param; } sub prepare_connection {