- my $ctx = $self->{ctx} or return;
- my $gz = $self->{gz};
- my $buf = delete($self->{buf});
- while (my $smsg = $self->{cb}->($ctx)) {
- my $mref = $ctx->{-inbox}->msg_by_smsg($smsg) or next;
- my $h = Email::Simple->new($mref)->header_obj;
-
- my $err = $gz->deflate(
- PublicInbox::Mbox::msg_hdr($ctx, $h, $smsg->{mid}),
- $buf);
- return gzip_fail($ctx, $err) if $err != Z_OK;
-
- $err = $gz->deflate(PublicInbox::Mbox::msg_body($$mref), $buf);
- return gzip_fail($ctx, $err) if $err != Z_OK;
-
- return $buf if length($buf) >= 8192;
-
- # be fair to other clients on public-inbox-httpd:
- $self->{buf} = $buf;
- return '';
+ my $cb = $self->{cb} or return;
+ while (my $smsg = $cb->($self)) {
+ my $eml = $self->{ibx}->smsg_eml($smsg) or next;
+ $self->zmore(msg_hdr($self, $eml));
+ return $self->translate(msg_body($eml));