X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FHTTP.pm;h=76e978a249261f2c8d4872973dfb293db720fb03;hb=6beeb75e5ccddf9f4e8eefc62cbe349972f59917;hp=18a1925066fbdbfabbed6ac54b60982a08f85db7;hpb=49e653848f34a179f38c1738f537f69c1205e92a;p=public-inbox.git diff --git a/lib/PublicInbox/HTTP.pm b/lib/PublicInbox/HTTP.pm index 18a19250..76e978a2 100644 --- a/lib/PublicInbox/HTTP.pm +++ b/lib/PublicInbox/HTTP.pm @@ -185,6 +185,7 @@ sub response_header_write { my $alive; if (!$term && $prot_persist) { # auto-chunk $chunked = $alive = 2; + $alive = 3 if $env->{REQUEST_METHOD} eq 'HEAD'; $h .= "Transfer-Encoding: chunked\r\n"; # no need for "Connection: keep-alive" with HTTP/1.1 } elsif ($term && ($prot_persist || ($conn =~ /\bkeep-alive\b/i))) { @@ -224,6 +225,7 @@ sub identity_write ($$) { sub response_done { my ($self, $alive) = @_; delete $self->{env}; # we're no longer busy + # HEAD requests set $alive = 3 so we don't send "0\r\n\r\n"; $self->write(\"0\r\n\r\n") if $alive == 2; $self->write($alive ? $self->can('requeue') : \&close); } @@ -235,7 +237,7 @@ sub getline_pull { # limit our own running time for fairness with other # clients and to avoid buffering too much: my $buf = eval { - local $/ = \8192; + local $/ = \65536; $forward->getline; } if $forward; @@ -288,7 +290,7 @@ sub response_write { getline_pull($self); # kick-off! } # these are returned to the calling application: - } elsif ($alive == 2) { + } elsif ($alive >= 2) { bless [ $self, $alive ], 'PublicInbox::HTTP::Chunked'; } else { bless [ $self, $alive ], 'PublicInbox::HTTP::Identity';