+ socketpair($s1, $s2, AF_UNIX, $type, 0) or BAIL_OUT $!;
+ $s1->blocking(0);
+ my $nsent = 0;
+ while (defined(my $n = $send->($s1, $sfds, $src, $flag))) {
+ $nsent += $n;
+ fail "sent 0 bytes" if $n == 0;
+ }
+ ok($!{EAGAIN}, "hit EAGAIN on send $desc");
+ ok($nsent > 0, 'sent some bytes');
+
+ socketpair($s1, $s2, AF_UNIX, $type, 0) or BAIL_OUT $!;
+ is($send->($s1, [], $src, $flag), length($src), 'sent w/o FDs');
+ $buf = 'nope';
+ @fds = $recv->($s2, $buf, length($src));
+ is(scalar(@fds), 0, 'no FDs received');
+ is($buf, $src, 'recv w/o FDs');
+
+ my $nr = 2 * 1024 * 1024;
+ while (1) {
+ vec(my $vec = '', $nr * 8 - 1, 1) = 1;
+ my $n = $send->($s1, [], $vec, $flag);
+ if (defined($n)) {
+ $n == length($vec) or
+ fail "short send: $n != ".length($vec);
+ diag "sent $nr, retrying with more";
+ $nr += 2 * 1024 * 1024;
+ } else {
+ ok($!{EMSGSIZE}, 'got EMSGSIZE');
+ # diag "$nr bytes hits EMSGSIZE";
+ last;
+ }
+ }