lib/PublicInbox/Inbox.pm | 12 +++++++++--- diff --git a/lib/PublicInbox/Inbox.pm b/lib/PublicInbox/Inbox.pm index 47b863094bae63964ff97afc84657473e5c8c75f..4c7305f96dfa041710987697fc4a2dc76eba8549 100644 --- a/lib/PublicInbox/Inbox.pm +++ b/lib/PublicInbox/Inbox.pm @@ -298,9 +298,15 @@ my ($self, $mid, $ref) = @_; 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; }