From: Eric Wong Date: Sun, 5 Jul 2020 23:27:25 +0000 (+0000) Subject: {gzip,noop}filter: ->zmore returns undef, always X-Git-Tag: v1.6.0~291 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f72164822464f630c56ac13edc6756987d1e48f6;p=thirdparty%2Fpublic-inbox.git {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. --- diff --git a/lib/PublicInbox/GzipFilter.pm b/lib/PublicInbox/GzipFilter.pm index d2eb4e664..0fbb4476a 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 b9c00ff7a..a97dbde64 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 780c97e91..d641e6d5c 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('' . + $gzf->zmore('<html><head><title>' . 'public-inbox listing' . '
');
 	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('

'.
+	my $out = $gzf->zflush('

'.
 				PublicInbox::WwwStream::code_footer($env) .
 				'
'); $h->[3] = bytes::length($out);