From: Eric Wong Date: Mon, 11 Mar 2024 10:06:15 +0000 (+0000) Subject: listener: don't loop on errors X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cdf70291cfe96fa1deb081873d156e8c31c70938;p=thirdparty%2Fpublic-inbox.git listener: don't loop on errors Fortunately, this only affects `--multi-accept=' users, with `--multi-accept=-1' users getting infinite loops. I noticed this when EMFILE was reached on my setup, but any error should cause us to give up accept(2) (at least temporarily) and allow work for other items in the event loop to be processed. --- diff --git a/lib/PublicInbox/Listener.pm b/lib/PublicInbox/Listener.pm index 4669cf048..c83901b2a 100644 --- a/lib/PublicInbox/Listener.pm +++ b/lib/PublicInbox/Listener.pm @@ -41,9 +41,9 @@ sub event_step { # ECONNABORTED is common with bad connections return; } elsif (my $sym = $ERR_WARN{int($!)}) { - warn "W: accept(): $! ($sym)\n"; + return warn "W: accept(): $! ($sym)\n"; } else { - warn "BUG?: accept(): $!\n"; + return warn "BUG?: accept(): $!\n"; } } while ($n--); }