about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/Inbox.pm12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/PublicInbox/Inbox.pm b/lib/PublicInbox/Inbox.pm
index 47b86309..4c7305f9 100644
--- a/lib/PublicInbox/Inbox.pm
+++ b/lib/PublicInbox/Inbox.pm
@@ -298,9 +298,15 @@ sub msg_by_mid ($$;$) {
         my $srch = search($self) or
                         return msg_by_path($self, mid2path($mid), $ref);
         my $smsg;
-        $srch->retry_reopen(sub {
-                $smsg = $srch->lookup_skeleton($mid) and $smsg->load_expand;
-        });
+        # favor the Message-ID we used for the NNTP article number:
+        if (my $mm = mm($self)) {
+                my $num = $mm->num_for($mid);
+                $smsg = $srch->lookup_article($num);
+        } else {
+                $smsg = $srch->retry_reopen(sub {
+                        $srch->lookup_skeleton($mid) and $smsg->load_expand;
+                });
+        }
         $smsg ? msg_by_smsg($self, $smsg, $ref) : undef;
 }