]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/Spamcheck/Spamc.pm
run update-copyrights from gnulib for 2019
[public-inbox.git] / lib / PublicInbox / Spamcheck / Spamc.pm
index 30eec95cc6fad519c02980fb7cbb16adec19ce88..e34748c67ab16c533cf7b9fd608e498b2631bdb9 100644 (file)
@@ -1,5 +1,7 @@
-# Copyright (C) 2016 all contributors <meta@public-inbox.org>
+# Copyright (C) 2016-2019 all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
+
+# Default spam filter class for wrapping spamc(1)
 package PublicInbox::Spamcheck::Spamc;
 use strict;
 use warnings;
@@ -29,10 +31,14 @@ sub spamcheck {
                my $buf = '';
                $out = \$buf;
        }
+again:
        do {
                $r = sysread($fh, $$out, 65536, length($$out));
        } while (defined($r) && $r != 0);
-       defined $r or die "read failed: $!";
+       unless (defined $r) {
+               goto again if $!{EINTR};
+               die "read failed: $!";
+       }
        close $fh or die "close failed: $!";
        waitpid($pid, 0);
        ($? || $$out eq '') ? 0 : 1;