From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS43350 77.247.176.0/21 X-Spam-Status: No, score=-1.4 required=3.0 tests=AWL,BAYES_00, RCVD_IN_MSPIKE_BL,RCVD_IN_MSPIKE_ZBI,RCVD_IN_XBL,SPF_FAIL,SPF_HELO_FAIL shortcircuit=no autolearn=no autolearn_force=no version=3.4.0 Received: from 80x24.org (politkovskaja.torservers.net [77.247.181.165]) by dcvr.yhbt.net (Postfix) with ESMTP id 7839521007 for ; Sat, 2 Jul 2016 21:50:40 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 3/3] nntp: respect 3 minute idle time for shutdown Date: Sat, 2 Jul 2016 21:50:30 +0000 Message-Id: <20160702215030.7692-4-e@80x24.org> In-Reply-To: <20160702215030.7692-1-e@80x24.org> References: <20160702215030.7692-1-e@80x24.org> List-Id: This avoids breaking clients on graceful shutdown since NNTP responses should usually be quick. --- lib/PublicInbox/NNTP.pm | 15 ++++++++++++--- t/nntpd.t | 1 + 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/PublicInbox/NNTP.pm b/lib/PublicInbox/NNTP.pm index b07e184..56d0838 100644 --- a/lib/PublicInbox/NNTP.pm +++ b/lib/PublicInbox/NNTP.pm @@ -998,10 +998,19 @@ sub watch_read { $rv; } +sub not_idle_long ($$) { + my ($self, $now) = @_; + defined(my $fd = $self->{fd}) or return; + my $ary = $EXPMAP->{$fd} or return; + my $exp_at = $ary->[0] + $EXPTIME; + $exp_at > $now; +} + # for graceful shutdown in PublicInbox::Daemon: -sub busy () { - my ($self) = @_; - ($self->{rbuf} ne '' || $self->{long_res} || $self->{write_buf_size}); +sub busy { + my ($self, $now) = @_; + ($self->{rbuf} ne '' || $self->{long_res} || $self->{write_buf_size} || + not_idle_long($self, $now)); } 1; diff --git a/t/nntpd.t b/t/nntpd.t index 5875b73..7192d78 100644 --- a/t/nntpd.t +++ b/t/nntpd.t @@ -219,6 +219,7 @@ EOF is(scalar @r, 1, 'only one response line'); } + $n = $s = undef; is($pid, waitpid($pid, 0), 'nntpd exited successfully'); my $eout = eval { local $/;