unless ( $c->request->{_body} ) {
my $type = $c->request->header('Content-Type');
$c->request->{_body} = HTTP::Body->new( $type, $length );
- $c->request->{_body}->{tmpdir} = $c->config->{uploadtmp}
+ $c->request->{_body}->tmpdir( $c->config->{uploadtmp} )
if exists $c->config->{uploadtmp};
}
# replace semi-colons
$query_string =~ s/;/&/g;
- my @params = split /&/, $query_string;
+ my @params = grep { length $_ } split /&/, $query_string;
for my $item ( @params ) {
my ($param, $value)
= map { $self->unescape_uri($_) }
- split( /=/, $item );
+ split( /=/, $item, 2 );
$param = $self->unescape_uri($item) unless defined $param;
sub unescape_uri {
my ( $self, $str ) = @_;
-
- $str =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg;
- $str =~ s/\+/ /g;
-
+
+ $str =~ s/(?:%([0-9A-Fa-f]{2})|\+)/defined $1 ? chr(hex($1)) : ' '/eg;
+
return $str;
}