]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/Mbox.pm
treewide: run update-copyrights from gnulib for 2019
[public-inbox.git] / lib / PublicInbox / Mbox.pm
index 3fdda5eaa8100f0435ce8b8f1a4f4612f9fe8204..5693d30b1c5ab80ce08fe56f694ffd84b94d7522 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2019 all contributors <meta@public-inbox.org>
+# Copyright (C) 2015-2020 all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 
 # Streaming (via getline) interface for formatting messages as an mboxrd.
@@ -12,6 +12,7 @@ use strict;
 use warnings;
 use PublicInbox::MID qw/mid_escape/;
 use PublicInbox::Hval qw/to_filename/;
+use PublicInbox::SearchMsg;
 use Email::Simple;
 use Email::MIME::Encode;
 
@@ -23,11 +24,10 @@ sub subject_fn ($) {
        # no need for full Email::MIME, here
        if ($fn =~ /=\?/) {
                eval { $fn = Encode::decode('MIME-Header', $fn) };
-               $fn = 'no-subject' if $@;
+               return 'no-subject' if $@;
        }
        $fn =~ s/^re:\s+//i;
-       $fn = to_filename($fn);
-       $fn eq '' ? 'no-subject' : $fn;
+       $fn eq '' ? 'no-subject' : to_filename($fn);
 }
 
 sub mb_stream {
@@ -204,10 +204,8 @@ sub results_cb {
        my $srch = $ctx->{srch};
        while (1) {
                while (my $mi = (($mset->items)[$ctx->{iter}++])) {
-                       my $doc = $mi->get_document;
-                       my $smsg = $srch->retry_reopen(sub {
-                               PublicInbox::SearchMsg->load_doc($doc);
-                       }) or next;
+                       my $smsg = PublicInbox::SearchMsg::from_mitem($mi,
+                                                               $srch) or next;
                        return $smsg;
                }
                # refill result set