about summary refs log tree commit homepage
path: root/lib/PublicInbox/DS.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2023-09-26 07:44:35 +0000
committerEric Wong <e@80x24.org>2023-09-26 21:02:37 +0000
commit77cbe5178ad09f239f4362f712a42410dd233544 (patch)
treedca613c759606ac33ca19f7fc64ccfd308d57b09 /lib/PublicInbox/DS.pm
parent62d50411dcc92cdf406d52a94d99157cdeb31494 (diff)
downloadpublic-inbox-77cbe5178ad09f239f4362f712a42410dd233544.tar.gz
perlipc(1) man page states both wait + waitpid will retry
on EINTR.  Thus there's no need to retry it ourselves.
Diffstat (limited to 'lib/PublicInbox/DS.pm')
-rw-r--r--lib/PublicInbox/DS.pm9
1 files changed, 3 insertions, 6 deletions
diff --git a/lib/PublicInbox/DS.pm b/lib/PublicInbox/DS.pm
index 49550b2b..142122a8 100644
--- a/lib/PublicInbox/DS.pm
+++ b/lib/PublicInbox/DS.pm
@@ -32,7 +32,7 @@ use PublicInbox::Syscall qw(%SIGNUM
         EPOLLIN EPOLLOUT EPOLLONESHOT EPOLLEXCLUSIVE);
 use PublicInbox::Tmpfile;
 use PublicInbox::Select;
-use Errno qw(EAGAIN EINVAL ECHILD EINTR);
+use Errno qw(EAGAIN EINVAL ECHILD);
 use Carp qw(carp croak);
 our @EXPORT_OK = qw(now msg_more awaitpid add_timer add_uniq_timer);
 
@@ -713,16 +713,13 @@ sub awaitpid {
         $AWAIT_PIDS->{$pid} = \@cb_args if @cb_args;
         # provide synchronous API
         if (defined(wantarray) || (!$in_loop && !@cb_args)) {
-                my $ret;
-again:
-                $ret = waitpid($pid, 0) // -2;
+                my $ret = waitpid($pid, 0);
                 if ($ret == $pid) {
                         my $cb_args = delete $AWAIT_PIDS->{$pid};
                         @cb_args = @$cb_args if !@cb_args && $cb_args;
                         await_cb($pid, @cb_args);
                 } else {
-                        goto again if $! == EINTR;
-                        carp "waitpid($pid): $!";
+                        carp "waitpid($pid) => $ret ($!)";
                         delete $AWAIT_PIDS->{$pid};
                 }
                 return $ret;