From aeaa38f620cf880a073b3a37463f0c577188df46 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 28 Feb 2016 20:57:57 +0000 Subject: http: support graceful shutdown like nntp HTTP responses may be long-running or requests may be slow or pipelined. Ensure we don't kill them off prematurely. --- lib/PublicInbox/HTTP.pm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'lib/PublicInbox/HTTP.pm') diff --git a/lib/PublicInbox/HTTP.pm b/lib/PublicInbox/HTTP.pm index f1016d2f..928c0f22 100644 --- a/lib/PublicInbox/HTTP.pm +++ b/lib/PublicInbox/HTTP.pm @@ -103,7 +103,6 @@ sub app_dispatch ($) { my ($self) = @_; $self->watch_read(0); my $env = $self->{env}; - $self->{env} = undef; $env->{REMOTE_ADDR} = $self->peer_ip_string; # Danga::Socket $env->{REMOTE_PORT} = $self->{peer_port}; # set by peer_ip_string if (my $host = $env->{HTTP_HOST}) { @@ -169,6 +168,7 @@ sub response_write { } else { $self->write(sub { $self->close }); } + $self->{env} = undef; }; if (defined $res->[2]) { @@ -336,4 +336,10 @@ sub quit { sub event_hup { $_[0]->close } sub event_err { $_[0]->close } +# for graceful shutdown in PublicInbox::Daemon: +sub busy () { + my ($self) = @_; + ($self->{rbuf} ne '' || $self->{env} || $self->{write_buf_size}); +} + 1; -- cgit v1.2.3-24-ge0c7