]> git.ipfire.org Git - thirdparty/public-inbox.git/commitdiff
listener: don't loop on errors
authorEric Wong <e@80x24.org>
Mon, 11 Mar 2024 10:06:15 +0000 (10:06 +0000)
committerEric Wong <e@80x24.org>
Tue, 12 Mar 2024 06:18:11 +0000 (06:18 +0000)
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.

lib/PublicInbox/Listener.pm

index 4669cf048187e2d428d0ed7ecdba52977829fd2b..c83901b2afb2d69d6ae6e6c5b80a50375bd249b2 100644 (file)
@@ -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--);
 }