From 77cbe5178ad09f239f4362f712a42410dd233544 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 26 Sep 2023 07:44:35 +0000 Subject: ds: awaitpid: Perl waitpid retries on EINTR automatically perlipc(1) man page states both wait + waitpid will retry on EINTR. Thus there's no need to retry it ourselves. --- lib/PublicInbox/DS.pm | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'lib/PublicInbox/DS.pm') 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; -- cgit v1.2.3-24-ge0c7