lib/PublicInbox/GzipFilter.pm | 2 +- lib/PublicInbox/NoopFilter.pm | 19 +++++++++++++++---- lib/PublicInbox/WwwListing.pm | 8 ++++---- diff --git a/lib/PublicInbox/GzipFilter.pm b/lib/PublicInbox/GzipFilter.pm index d2eb4e6643e500f7a77cdf27aecb75380be8377c..0fbb4476aabf637d82af5f5f3abf2ff47de1976c 100644 --- a/lib/PublicInbox/GzipFilter.pm +++ b/lib/PublicInbox/GzipFilter.pm @@ -73,7 +73,7 @@ sub zmore { my $self = $_[0]; # $_[1] => input my $err = $self->{gz}->deflate($_[1], $self->{zbuf}); die "gzip->deflate: $err" if $err != Z_OK; - ''; + undef; } # flushes and returns the final bit of gzipped data diff --git a/lib/PublicInbox/NoopFilter.pm b/lib/PublicInbox/NoopFilter.pm index b9c00ff7a13e14fe9f59675ad37747cde6efda58..a97dbde6456fd558c896367207e26a1b34396661 100644 --- a/lib/PublicInbox/NoopFilter.pm +++ b/lib/PublicInbox/NoopFilter.pm @@ -4,10 +4,21 @@ package PublicInbox::NoopFilter; use strict; -sub new { bless \(my $ignore), __PACKAGE__ } +sub new { bless \(my $self = ''), __PACKAGE__ } # noop workalike for PublicInbox::GzipFilter methods -sub translate { $_[1] // '' } -sub zmore { $_[1] } -sub zflush { $_[1] // '' } +sub translate { + my $self = $_[0]; + my $ret = $$self .= ($_[1] // ''); + $$self = ''; + $ret; +} + +sub zmore { + ${$_[0]} .= $_[1]; + undef; +} + +sub zflush { translate($_[0], $_[1]) } + 1; diff --git a/lib/PublicInbox/WwwListing.pm b/lib/PublicInbox/WwwListing.pm index 780c97e913b22a9d2427aa4d7cd5a3c80f4a65ea..d641e6d5cf6d38c558147e03db002dd3db640d9c 100644 --- a/lib/PublicInbox/WwwListing.pm +++ b/lib/PublicInbox/WwwListing.pm @@ -109,7 +109,7 @@ my ($env, $list) = @_; my $h = [ 'Content-Type', 'text/html; charset=UTF-8', 'Content-Length', undef ]; my $gzf = gzf_maybe($h, $env) || PublicInbox::NoopFilter::new(); - my $out = $gzf->zmore('
');
my $code = 404;
@@ -122,11 +122,11 @@ } map { [ $_->modified, $_ ] } @$list;
my $tmp = join("\n", map { ibx_entry(@$_, $env) } @$list);
my $l = PublicInbox::Linkify->new;
- $out .= $gzf->zmore($l->to_html($tmp));
+ $gzf->zmore($l->to_html($tmp));
} else {
- $out .= $gzf->zmore('no inboxes, yet');
+ $gzf->zmore('no inboxes, yet');
}
- $out .= $gzf->zflush(''.
+ my $out = $gzf->zflush(''. PublicInbox::WwwStream::code_footer($env) . ''); $h->[3] = bytes::length($out);