X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FDS.pm;h=d0caa5e73102f13ea27bf455e242b19cbb72220e;hb=4ccff6f9122da89c18ae3f38a130a06de5434826;hp=661be1fd2c4553723e07587f26e04be4adb5ffb1;hpb=823dbcacf7829fd0f42748ae7712a76fa4c64a76;p=public-inbox.git diff --git a/lib/PublicInbox/DS.pm b/lib/PublicInbox/DS.pm index 661be1fd..d0caa5e7 100644 --- a/lib/PublicInbox/DS.pm +++ b/lib/PublicInbox/DS.pm @@ -244,7 +244,7 @@ sub reap_pids { } # reentrant SIGCHLD handler (since reap_pids is not reentrant) -sub enqueue_reap { $reap_armed //= requeue(\&reap_pids) } +sub enqueue_reap () { $reap_armed //= requeue(\&reap_pids) } sub in_loop () { $in_loop } @@ -332,6 +332,7 @@ sub new { _InitPoller(); +retry: if (epoll_ctl($Epoll, EPOLL_CTL_ADD, $fd, $ev)) { if ($! == EINVAL && ($ev & EPOLLEXCLUSIVE)) { $ev &= ~EPOLLEXCLUSIVE; @@ -629,7 +630,7 @@ sub dwaitpid ($$$) { push @$wait_pids, [ @_ ]; # [ $pid, $cb, $arg ] # We could've just missed our SIGCHLD, cover it, here: - goto &enqueue_reap; # tail recursion + enqueue_reap(); } sub _run_later () {