From: Eric Wong Date: Fri, 12 Jul 2019 00:03:41 +0000 (+0000) Subject: nntp: clear local timer on idle client expiry X-Git-Tag: v1.2.0~117 X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=commitdiff_plain;h=bb484f2ca29b10d2ae001bda77406c8b433c9e80 nntp: clear local timer on idle client expiry We need to ensure further timers can be registered if there's currently no idle clients. --- diff --git a/lib/PublicInbox/NNTP.pm b/lib/PublicInbox/NNTP.pm index f4208f87..0d2bc4f3 100644 --- a/lib/PublicInbox/NNTP.pm +++ b/lib/PublicInbox/NNTP.pm @@ -57,22 +57,20 @@ sub expire_old () { my $now = now(); my $exp = $EXPTIME; my $old = $now - $exp; - my $nr = 0; my %new; while (my ($fd, $v) = each %$EXPMAP) { my ($idle_time, $nntp) = @$v; if ($idle_time < $old) { if (!$nntp->shutdn) { - ++$nr; $new{$fd} = $v; } } else { - ++$nr; $new{$fd} = $v; } } $EXPMAP = \%new; - $expt = PublicInbox::EvCleanup::later(*expire_old) if $nr; + $expt = scalar(keys %new) ? PublicInbox::EvCleanup::later(*expire_old) + : undef; } sub greet ($) { $_[0]->write($_[0]->{nntpd}->{greet}) };