Blame t/blocking.t

Packit a83d8b
#!/usr/bin/perl
Packit a83d8b
Packit a83d8b
use strict;
Packit a83d8b
use warnings;
Packit a83d8b
Packit a83d8b
use Config;
Packit a83d8b
Packit a83d8b
BEGIN {
Packit a83d8b
    if (-d "lib" && -f "TEST") {
Packit a83d8b
	my $reason;
Packit a83d8b
	if ($Config{'extensions'} !~ /\bSocket\b/) {
Packit a83d8b
	    $reason = 'Socket extension unavailable';
Packit a83d8b
	}
Packit a83d8b
	elsif ($Config{'extensions'} !~ /\bIO\b/) {
Packit a83d8b
	    $reason = 'IO extension unavailable';
Packit a83d8b
	}
Packit a83d8b
	if ($reason) {
Packit a83d8b
	    print "1..0 # Skip: $reason\n";
Packit a83d8b
	    exit 0;
Packit a83d8b
        }
Packit a83d8b
    }
Packit a83d8b
    if ($^O eq 'MSWin32') {
Packit a83d8b
        print "1..0 # Skip: accept() fails for IPv6 under MSWin32\n";
Packit a83d8b
        exit 0;
Packit a83d8b
    }
Packit a83d8b
}
Packit a83d8b
Packit a83d8b
use Test::More;
Packit a83d8b
Packit a83d8b
plan tests => 2;
Packit a83d8b
Packit a83d8b
use IO::Socket::INET6;
Packit a83d8b
Packit a83d8b
my $listen = IO::Socket::INET6->new(Listen => 2,
Packit a83d8b
				Proto => 'tcp',
Packit a83d8b
				Timeout => 15,
Packit a83d8b
				Blocking => 0,
Packit a83d8b
			       ) or die "$@";
Packit a83d8b
Packit a83d8b
# TEST
Packit a83d8b
is($listen->blocking(), 0, 'Non-blocking works on listeners');
Packit a83d8b
Packit a83d8b
my $port = $listen->sockport;
Packit a83d8b
Packit a83d8b
if(my $pid = fork()) {
Packit a83d8b
    # Connect to ourselves with a non-blocking socket
Packit a83d8b
    my $sock = IO::Socket::INET6->new(PeerAddr => '::1',
Packit a83d8b
				PeerPort => $port,
Packit a83d8b
				Blocking => 0);
Packit a83d8b
    # TEST
Packit a83d8b
    is($sock->blocking(), 0, 'Non-blocking works on outbound connections');
Packit a83d8b
Packit a83d8b
    undef($sock);
Packit a83d8b
} elsif (defined $pid) {
Packit a83d8b
    my $sock = $listen->accept();
Packit a83d8b
    my $line = <$sock>;
Packit a83d8b
    $listen->close;
Packit a83d8b
    exit;
Packit a83d8b
} else {
Packit a83d8b
    die $!;
Packit a83d8b
}
Packit a83d8b
Packit a83d8b