Blame t/host6.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{'d_fork'}) {
Packit a83d8b
	    $reason = 'no fork';
Packit a83d8b
	}
Packit a83d8b
	elsif ($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
use IO::Socket::INET6;
Packit a83d8b
Packit a83d8b
my $listen = IO::Socket::INET6->new(Listen => 2,
Packit a83d8b
				Proto => 'tcp',
Packit a83d8b
				# some systems seem to need as much as 10,
Packit a83d8b
				# so be generous with the timeout
Packit a83d8b
				Timeout => 15,
Packit a83d8b
			       ) or die "$@";
Packit a83d8b
Packit a83d8b
# TEST
Packit a83d8b
my $sockhost = $listen->sockhost();
Packit a83d8b
Packit a83d8b
Packit a83d8b
my $port = $listen->sockport;
Packit a83d8b
Packit a83d8b
if(my $pid = fork()) {
Packit a83d8b
    my $sock = $listen->accept();
Packit a83d8b
    my $line = <$sock>;
Packit a83d8b
    $listen->close;
Packit a83d8b
    exit;
Packit a83d8b
} elsif (defined $pid) {
Packit a83d8b
Packit a83d8b
    plan tests => 4;
Packit a83d8b
    # child, try various ways to connect
Packit a83d8b
    my $sock = IO::Socket::INET6->new("[::1]:$port");
Packit a83d8b
Packit a83d8b
    # TEST
Packit a83d8b
    ok ($sockhost, "Checking for sockhost() success");
Packit a83d8b
Packit a83d8b
    # TEST
Packit a83d8b
    ok ($sock->peerhost(), "Checking for peerhost() success");
Packit a83d8b
Packit a83d8b
    # TEST
Packit a83d8b
    is ($sock->sockflow(), 0, "Checking for sockflow() success");
Packit a83d8b
Packit a83d8b
    # TEST
Packit a83d8b
    is ($sock->peerflow(), 0, "Checking for peerflow() success");
Packit a83d8b
Packit a83d8b
    print {$sock} "H\n";
Packit a83d8b
    undef($sock);
Packit a83d8b
} else {
Packit a83d8b
    die $!;
Packit a83d8b
}
Packit a83d8b
Packit a83d8b