We don't need to take extra trips through the event loop for a
single message (in the common case of Message-IDs being unique).
In fact, holding the body reference left behind by Email::Simple
could be harmful to memory usage, though in practice it's not a
big problem since code paths which use Email::MIME take far more.
my ($ctx, $id, $prev, $next, $mref, $hdr) = @$more;
if ($hdr) { # first message hits this, only
pop @$more; # $hdr
my ($ctx, $id, $prev, $next, $mref, $hdr) = @$more;
if ($hdr) { # first message hits this, only
pop @$more; # $hdr
- return msg_hdr($ctx, $hdr);
- }
- if ($mref) { # all messages hit this
- return msg_body($$mref);
+ return msg_hdr($ctx, $hdr) . msg_body($$mref);
}
my $cur = $next or return;
my $ibx = $ctx->{-inbox};
$next = $ibx->over->next_by_mid($ctx->{mid}, \$id, \$prev);
$mref = $ibx->msg_by_smsg($cur) or return;
$hdr = Email::Simple->new($mref)->header_obj;
}
my $cur = $next or return;
my $ibx = $ctx->{-inbox};
$next = $ibx->over->next_by_mid($ctx->{mid}, \$id, \$prev);
$mref = $ibx->msg_by_smsg($cur) or return;
$hdr = Email::Simple->new($mref)->header_obj;
- @$more = ($ctx, $id, $prev, $next, $mref); # $next may be undef, here
- msg_hdr($ctx, $hdr); # all but first message hits this
+ @$more = ($ctx, $id, $prev, $next); # $next may be undef, here
+ msg_hdr($ctx, $hdr) . msg_body($$mref);