]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/SearchMsg.pm
www*stream: favor \&close instead of *close
[public-inbox.git] / lib / PublicInbox / SearchMsg.pm
index adadf92ed097e8a1b23d11068faa8cebf0237783..ea54ba8a9487c30c8ead25dc94a28b73654c2c45 100644 (file)
@@ -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 {
@@ -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;