]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/WWW.pm
www: do not mangle characters from search queries
[public-inbox.git] / lib / PublicInbox / WWW.pm
index 4d599fc973daec9197e1020bdc15fc260be7e0ef..f3c702e9895f9eb64a745e9116ee14a419073985 100644 (file)
@@ -42,11 +42,12 @@ sub call {
 
        # 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};
@@ -112,8 +113,8 @@ sub call {
 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;
 
@@ -165,7 +166,7 @@ sub invalid_inbox_mid {
        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)) {
@@ -225,8 +226,8 @@ sub get_mid_html {
        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);
 }