Make the forking tests more reliable. During copy the read(2)
authorbluhm <bluhm@openbsd.org>
Mon, 18 Aug 2014 21:51:45 +0000 (21:51 +0000)
committerbluhm <bluhm@openbsd.org>
Mon, 18 Aug 2014 21:51:45 +0000 (21:51 +0000)
system call might fail with EAGAIN when the other forked process
has already read the data.

regress/sys/kern/sosplice/funcs.pl

index 19c68b9..aab739f 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: funcs.pl,v 1.6 2014/04/24 09:05:10 bluhm Exp $
+#      $OpenBSD: funcs.pl,v 1.7 2014/08/18 21:51:45 bluhm Exp $
 
 # Copyright (c) 2010-2013 Alexander Bluhm <bluhm@openbsd.org>
 #
@@ -205,6 +205,7 @@ sub relay_copy_stream {
                }
                my $read = sysread(STDIN, $buf,
                    $max && $max < $size ? $max : $size);
+               next if !defined($read) && $!{EAGAIN};
                defined($read)
                    or die ref($self), " sysread at $len failed: $!";
                if ($read == 0) {