- $srch->retry_reopen(sub {
- ($head, $tail, $db) = $srch->each_smsg_by_mid($mid);
- for (; !defined($first) && $head != $tail; $head++) {
- my @args = ($head, $db, $mid);
- my $smsg = PublicInbox::SearchMsg->get(@args);
- my $mref = $ibx->msg_by_smsg($smsg) or next;
- $first = Email::Simple->new($mref);
- }
- if ($head != $tail) {
- $more = [ $ctx, $head, $tail, $db, $first ];
- }
- });
+ my ($id, $prev);
+ my $smsg = $srch->next_by_mid($mid, \$id, \$prev) or return;
+ my $mref = $ibx->msg_by_smsg($smsg) or return;
+ $first = Email::Simple->new($mref);
+ my $next = $srch->next_by_mid($mid, \$id, \$prev);
+ # $more is for ->getline
+ $more = [ $ctx, $id, $prev, $next, $first ] if $next;