about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2024-03-11 10:06:15 +0000
committerEric Wong <e@80x24.org>2024-03-12 06:18:11 +0000
commitcdf70291cfe96fa1deb081873d156e8c31c70938 (patch)
tree74ad2ed0a4c68944a6cfb3e3d32d2e3a2d8c14f1
parent1c95e02e19ffc61611dbbfafe64eb13500b44b96 (diff)
downloadpublic-inbox-cdf70291cfe96fa1deb081873d156e8c31c70938.tar.gz
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.
-rw-r--r--lib/PublicInbox/Listener.pm4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/PublicInbox/Listener.pm b/lib/PublicInbox/Listener.pm
index 4669cf04..c83901b2 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--);
 }