X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FSearchMsg.pm;h=84fe48025e564be6b81325f1fa43a6d206d1f124;hb=d107a62797ea4126d0132db72dda21e7706e866d;hp=96a26b1538a7775bef753480adead7f6e1cf3d8c;hpb=d9aad3a7988262b31ab2171f2c982daf04ac822c;p=public-inbox.git diff --git a/lib/PublicInbox/SearchMsg.pm b/lib/PublicInbox/SearchMsg.pm index 96a26b15..84fe4802 100644 --- a/lib/PublicInbox/SearchMsg.pm +++ b/lib/PublicInbox/SearchMsg.pm @@ -1,4 +1,4 @@ -# Copyright (C) 2015-2018 all contributors +# Copyright (C) 2015-2020 all contributors # License: AGPL-3.0+ # based on notmuch, but with no concept of folders, files or flags # @@ -27,7 +27,8 @@ sub wrap { sub get_val ($$) { my ($doc, $col) = @_; - Search::Xapian::sortable_unserialise($doc->get_value($col)); + # sortable_unserialise is defined by PublicInbox::Search::load_xapian() + sortable_unserialise($doc->get_value($col)); } sub to_doc_data { @@ -41,8 +42,8 @@ sub to_doc_data { $self->cc, $oid, $mid0, - $self->{bytes} || '', - $self->{lines} || '' + $self->{bytes} // '', + $self->{lines} // '' ); } @@ -91,10 +92,11 @@ sub psgi_cull ($) { } # Only called by PSGI interface, not NNTP -sub load_doc { - my ($class, $doc) = @_; - my $self = bless {}, $class; - psgi_cull(load_expand($self, $doc)); +sub from_mitem { + my ($mitem, $srch) = @_; + return $srch->retry_reopen(\&from_mitem, $mitem) if $srch; + my $self = bless {}, __PACKAGE__; + psgi_cull(load_expand($self, $mitem->get_document)); } # :bytes and :lines metadata in RFC 3977 @@ -107,8 +109,8 @@ sub __hdr ($$) { return $val if defined $val; my $mime = $self->{mime} or return; - $val = $mime->header($field); - $val = '' unless defined $val; + my @raw = $mime->header($field); + $val = join(', ', @raw); $val =~ tr/\t\n/ /; $val =~ tr/\r//d; $self->{$field} = $val;