diff options
author | Eric Wong <e@80x24.org> | 2019-05-16 07:06:21 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2019-05-16 07:10:55 +0000 |
commit | 1ea73ea22b4d2ea3a9c123753bdc58f9d480e188 (patch) | |
tree | 52c69fb8e2a585315a09f120ea2a8a193462f0b9 /lib/PublicInbox/WWW.pm | |
parent | fee27210002cc343e4e99e3a8b10ac9fa5f0f26a (diff) | |
download | public-inbox-1ea73ea22b4d2ea3a9c123753bdc58f9d480e188.tar.gz |
www: unescape '+' => ' ' before general URI unescape
This allows searching for terms with "+" in them properly.
Diffstat (limited to 'lib/PublicInbox/WWW.pm')
-rw-r--r-- | lib/PublicInbox/WWW.pm | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm index 1f3ca157..1c349d76 100644 --- a/lib/PublicInbox/WWW.pm +++ b/lib/PublicInbox/WWW.pm @@ -59,14 +59,14 @@ sub call { my $ctx = { env => $env, www => $self }; # we don't care about multi-value - my %qp = map { + %{$ctx->{qp}} = map { utf8::decode($_); - my ($k, $v) = split('=', uri_unescape($_), 2); - $v = '' unless defined $v; - $v =~ tr/+/ /; - ($k, $v) + tr/+/ /; + my ($k, $v) = split('=', $_, 2); + $v = uri_unescape($v // ''); + # none of the keys we care about will need escaping + $k => $v; } split(/[&;]+/, $env->{QUERY_STRING}); - $ctx->{qp} = \%qp; # avoiding $env->{PATH_INFO} here since that's already decoded my ($path_info) = ($env->{REQUEST_URI} =~ path_re($env)); |