# we don't care about multi-value
my %qp = map {
+ utf8::decode($_);
my ($k, $v) = split('=', uri_unescape($_), 2);
$v = '' unless defined $v;
$v =~ tr/+/ /;
($k, $v)
- } split(/[&;]/, $env->{QUERY_STRING});
+ } split(/[&;]+/, $env->{QUERY_STRING});
$ctx->{qp} = \%qp;
my $path_info = $env->{PATH_INFO};
sub preload {
require PublicInbox::Feed;
require PublicInbox::View;
- require PublicInbox::Thread;
- require Email::MIME;
+ require PublicInbox::SearchThread;
+ require PublicInbox::MIME;
require Digest::SHA;
require POSIX;
my $ret = invalid_inbox($ctx, $inbox);
return $ret if $ret;
- $ctx->{mid} = $mid = uri_unescape($mid);
+ $ctx->{mid} = $mid;
if ($mid =~ /\A[a-f0-9]{40}\z/) {
# this is horiffically wasteful for legacy URLs:
if ($mid = mid2blob($ctx)) {
my $x = mid2blob($ctx) or return r404($ctx);
require PublicInbox::View;
- require Email::MIME;
- my $mime = Email::MIME->new($x);
+ require PublicInbox::MIME;
+ my $mime = PublicInbox::MIME->new($x);
searcher($ctx);
PublicInbox::View::msg_html($ctx, $mime);
}