]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/WWW.pm
Merge remote-tracking branch 'origin/xap-optional' into master
[public-inbox.git] / lib / PublicInbox / WWW.pm
index 0f963dcbd907af3097ed5d0a8462c20acee3a0d9..b6f18f8d8140e130afdc637b4af277b10dc446c2 100644 (file)
@@ -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));
@@ -149,8 +149,11 @@ sub preload {
        require PublicInbox::MIME;
        require Digest::SHA;
        require POSIX;
-
-       foreach (qw(PublicInbox::Search PublicInbox::SearchView
+       eval {
+               require PublicInbox::Search;
+               PublicInbox::Search::load_xapian();
+       };
+       foreach (qw(PublicInbox::SearchView
                        PublicInbox::Mbox IO::Compress::Gzip
                        PublicInbox::NewsWWW)) {
                eval "require $_;";