Oops, we must unescape each key=value pair in a QUERY_STRING
individually; otherwise we cannot interpret '&' or ';' in
query parameter values.
# we don't care about multi-value
my %qp = map {
# we don't care about multi-value
my %qp = map {
- my ($k, $v) = split('=', $_, 2);
+ my ($k, $v) = split('=', uri_unescape($_), 2);
$v = '' unless defined $v;
$v =~ tr/+/ /;
($k, $v)
$v = '' unless defined $v;
$v =~ tr/+/ /;
($k, $v)
- } split(/[&;]/, uri_unescape($env->{QUERY_STRING}));
+ } split(/[&;]/, $env->{QUERY_STRING});
$ctx->{qp} = \%qp;
my $path_info = $env->{PATH_INFO};
$ctx->{qp} = \%qp;
my $path_info = $env->{PATH_INFO};