+sub msg_page_i {
+ my ($ctx, $eml) = @_;
+ if ($eml) { # called by WwwStream::async_eml or getline
+ my $smsg = $ctx->{smsg};
+ $ctx->{smsg} = $ctx->{over}->next_by_mid(@{$ctx->{next_arg}});
+ $ctx->{mhref} = ($ctx->{nr} || $ctx->{smsg}) ?
+ "../${\mid_href($smsg->{mid})}/" : '';
+ my $obuf = $ctx->{obuf} = _msg_page_prepare_obuf($eml, $ctx);
+ multipart_text_as_html($eml, $ctx);
+ delete $ctx->{obuf};
+ $$obuf .= '</pre><hr>';
+ $$obuf .= html_footer($ctx, $ctx->{first_hdr}) if !$ctx->{smsg};
+ $$obuf;
+ } else { # called by WwwStream::async_next or getline
+ $ctx->{smsg}; # may be undef
+ }
+}
+
+# /$INBOX/$MSGID/ for unindexed v1 inboxes
+sub no_over_html ($) {
+ my ($ctx) = @_;
+ my $bref = $ctx->{-inbox}->msg_by_mid($ctx->{mid}) or return; # 404
+ my $eml = PublicInbox::Eml->new($bref);
+ $ctx->{mhref} = '';
+ PublicInbox::WwwStream::init($ctx);
+ my $obuf = $ctx->{obuf} = _msg_page_prepare_obuf($eml, $ctx);
+ multipart_text_as_html($eml, $ctx);
+ delete $ctx->{obuf};
+ $$obuf .= '</pre><hr>';
+ eval { $$obuf .= html_footer($ctx, $eml) };
+ html_oneshot($ctx, 200, $obuf);
+}
+