-# Copyright (C) 2015-2021 all contributors <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
# Streaming interface for mboxrd HTTP responses
my $smsg = $ctx->{smsg} or return;
my $ibx = $ctx->{ibx};
my $eml = delete($ctx->{eml}) // $ibx->smsg_eml($smsg) // return;
- my $n = $ctx->{smsg} = $ibx->over->next_by_mid(@{$ctx->{next_arg}});
- $ctx->zmore(msg_hdr($ctx, $eml));
- if ($n) {
- $ctx->translate(msg_body($eml));
+ if (($ctx->{smsg} = $ibx->over->next_by_mid(@{$ctx->{next_arg}}))) {
+ $ctx->translate(msg_hdr($ctx, $eml), msg_body($eml));
} else { # last message
- $ctx->zflush(msg_body($eml));
+ $ctx->zflush(msg_hdr($ctx, $eml), msg_body($eml));
}
}
# next message
$ctx->{smsg} = $ctx->{ibx}->over->next_by_mid(@{$ctx->{next_arg}});
local $ctx->{eml} = $eml; # for mbox_hdr
- $ctx->zmore(msg_hdr($ctx, $eml));
- $ctx->write(msg_body($eml));
+ $ctx->write(msg_hdr($ctx, $eml), msg_body($eml));
}
sub mbox_hdr ($) {
# /$INBOX/$MESSAGE_ID/raw
sub emit_raw {
my ($ctx) = @_;
- $ctx->{base_url} = $ctx->{ibx}->base_url($ctx->{env});
my $over = $ctx->{ibx}->over or return no_over_raw($ctx);
my ($id, $prev);
my $mip = $ctx->{next_arg} = [ $ctx->{mid}, \$id, \$prev ];