]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/DS.pm
ds: add missing label for systems w/o EPOLLEXCLUSIVE
[public-inbox.git] / lib / PublicInbox / DS.pm
index 661be1fd2c4553723e07587f26e04be4adb5ffb1..d0caa5e73102f13ea27bf455e242b19cbb72220e 100644 (file)
@@ -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 () {