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;