X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FIPC.pm;h=37f029446ad75d13ee58257e84f76f9968874c1c;hb=620215dbaa63ecb04923bb29a1ed78606286c192;hp=172552b95cdf0a2ade2e4d437d98cf4e3ac6802d;hpb=21ce1a28915374297829bd05feda0cea52adb324;p=public-inbox.git diff --git a/lib/PublicInbox/IPC.pm b/lib/PublicInbox/IPC.pm index 172552b9..37f02944 100644 --- a/lib/PublicInbox/IPC.pm +++ b/lib/PublicInbox/IPC.pm @@ -16,7 +16,6 @@ use PublicInbox::Spawn; use PublicInbox::OnDestroy; use PublicInbox::WQWorker; use Socket qw(AF_UNIX MSG_EOR SOCK_STREAM); -use Errno qw(EMSGSIZE); my $SEQPACKET = eval { Socket::SOCK_SEQPACKET() }; # portable enough? use constant PIPE_BUF => $^O eq 'linux' ? 4096 : POSIX::_POSIX_PIPE_BUF(); my $WQ_MAX_WORKERS = 4096; @@ -303,8 +302,9 @@ sub wq_do { # always async if (my $s1 = $self->{-wq_s1}) { # run in worker my $fds = [ map { fileno($_) } @$ios ]; my $n = $send_cmd->($s1, $fds, freeze([$sub, @args]), MSG_EOR); - return if defined($n); - croak "sendmsg error: $!" if $! != EMSGSIZE; + return if defined($n); # likely + croak "sendmsg: $! (check RLIMIT_NOFILE)" if $!{ETOOMANYREFS}; + croak "sendmsg: $!" if !$!{EMSGSIZE}; socketpair(my $r, my $w, AF_UNIX, SOCK_STREAM, 0) or croak "socketpair: $!"; my $buf = freeze([$sub, @args]);