diff options
author | Eric Wong <e@yhbt.net> | 2020-07-05 23:27:25 +0000 |
---|---|---|
committer | Eric Wong <e@yhbt.net> | 2020-07-06 20:01:15 +0000 |
commit | f72164822464f630c56ac13edc6756987d1e48f6 (patch) | |
tree | da17617a2da5d120d797bd89326bec40b9fe4474 | |
parent | f26183401e3abfb64ad82537151f2718ac889074 (diff) | |
download | public-inbox-f72164822464f630c56ac13edc6756987d1e48f6.tar.gz |
{gzip,noop}filter: ->zmore returns undef, always
This simplifies callers, as witnessed by the change to WwwListing. It adds overhead to NoopFilter, but NoopFilter should see little use as nearly all HTTP clients request gzip.
-rw-r--r-- | lib/PublicInbox/GzipFilter.pm | 2 | ||||
-rw-r--r-- | lib/PublicInbox/NoopFilter.pm | 19 | ||||
-rw-r--r-- | lib/PublicInbox/WwwListing.pm | 8 |
3 files changed, 20 insertions, 9 deletions
diff --git a/lib/PublicInbox/GzipFilter.pm b/lib/PublicInbox/GzipFilter.pm index d2eb4e66..0fbb4476 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 b9c00ff7..a97dbde6 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 780c97e9..d641e6d5 100644 --- a/lib/PublicInbox/WwwListing.pm +++ b/lib/PublicInbox/WwwListing.pm @@ -109,7 +109,7 @@ sub html ($$) { 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('<html><head><title>' . + $gzf->zmore('<html><head><title>' . 'public-inbox listing</title>' . '</head><body><pre>'); my $code = 404; @@ -122,11 +122,11 @@ sub html ($$) { 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('</pre><hr><pre>'. + my $out = $gzf->zflush('</pre><hr><pre>'. PublicInbox::WwwStream::code_footer($env) . '</pre></body></html>'); $h->[3] = bytes::length($out); |