From 344897c0b27e061e41f2660f3c7a3de9a7b78452 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 26 Sep 2023 07:44:39 +0000 Subject: [PATCH] spamcheck/spamc: rely on ProcessPipe instead of waitpid We lose error information on CORE::close call, but the underlying close(2) syscall won't EIO nor ENOSPC on a read-only side of a pipe. Perl is already shielding us from EINTR and EBADF would be a bug in Perl itself. --- lib/PublicInbox/Spamcheck/Spamc.pm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/PublicInbox/Spamcheck/Spamc.pm b/lib/PublicInbox/Spamcheck/Spamc.pm index 2f8215324..672789172 100644 --- a/lib/PublicInbox/Spamcheck/Spamc.pm +++ b/lib/PublicInbox/Spamcheck/Spamc.pm @@ -21,14 +21,13 @@ sub spamcheck { my ($self, $msg, $out) = @_; my $rdr = { 0 => _msg_to_fh($self, $msg) }; - my ($fh, $pid) = popen_rd($self->{checkcmd}, undef, $rdr); + my $fh = popen_rd($self->{checkcmd}, undef, $rdr); unless (ref $out) { my $buf = ''; $out = \$buf; } $$out = do { local $/; <$fh> }; - close $fh or die "close failed: $!"; - waitpid($pid, 0); + close $fh; # PublicInbox::ProcessPipe::CLOSE ($? || $$out eq '') ? 0 : 1; } -- 2.47.2