- my ($ctx) = @_;
- my $cur = delete $ctx->{smsg} or return; # undef: done
- my $nxt;
- if (my $over = $ctx->{-inbox}->over) {
- $nxt = $ctx->{smsg} = $over->next_by_mid(@{$ctx->{next_arg}});
+ my ($ctx, $eml) = @_;
+ if ($eml) { # called by WwwStream::async_eml or getline
+ my $smsg = $ctx->{smsg};
+ my $over = $ctx->{ibx}->over;
+ $ctx->{smsg} = $over ? $over->next_by_mid(@{$ctx->{next_arg}})
+ : $ctx->gone('over');
+ $ctx->{mhref} = ($ctx->{nr} || $ctx->{smsg}) ?
+ "../${\mid_href($smsg->{mid})}/" : '';
+ my $obuf = $ctx->{obuf} = _msg_page_prepare_obuf($eml, $ctx);
+ if (length($$obuf)) {
+ multipart_text_as_html($eml, $ctx);
+ $$obuf .= '</pre><hr>';
+ }
+ delete $ctx->{obuf};
+ $$obuf .= html_footer($ctx, $ctx->{first_hdr}) if !$ctx->{smsg};
+ $$obuf;
+ } else { # called by WwwStream::async_next or getline
+ $ctx->{smsg}; # may be undef