|
Packit Service |
64bc36 |
#!/usr/bin/perl
|
|
Packit Service |
64bc36 |
|
|
Packit Service |
64bc36 |
use strict;
|
|
Packit Service |
64bc36 |
use warnings;
|
|
Packit Service |
64bc36 |
|
|
Packit Service |
64bc36 |
use Test::More;
|
|
Packit Service |
64bc36 |
|
|
Packit Service |
64bc36 |
use IO::Socket::IP;
|
|
Packit Service |
64bc36 |
|
|
Packit Service |
64bc36 |
use IO::Socket::INET;
|
|
Packit Service |
64bc36 |
use Socket qw( SOCK_STREAM unpack_sockaddr_in getaddrinfo );
|
|
Packit Service |
64bc36 |
|
|
Packit Service |
64bc36 |
{
|
|
Packit Service |
64bc36 |
my $testserver = IO::Socket::INET->new(
|
|
Packit Service |
64bc36 |
Listen => 1,
|
|
Packit Service |
64bc36 |
LocalHost => "127.0.0.1",
|
|
Packit Service |
64bc36 |
Type => SOCK_STREAM,
|
|
Packit Service |
64bc36 |
) or die "Cannot listen on PF_INET - $@";
|
|
Packit Service |
64bc36 |
|
|
Packit Service |
64bc36 |
my ( $err, @peeraddrinfo ) = getaddrinfo( "127.0.0.1", $testserver->sockport, { socktype => SOCK_STREAM } );
|
|
Packit Service |
64bc36 |
$err and die "Cannot getaddrinfo 127.0.0.1 - $err";
|
|
Packit Service |
64bc36 |
|
|
Packit Service |
64bc36 |
my $socket = IO::Socket::IP->new(
|
|
Packit Service |
64bc36 |
PeerAddrInfo => \@peeraddrinfo,
|
|
Packit Service |
64bc36 |
);
|
|
Packit Service |
64bc36 |
|
|
Packit Service |
64bc36 |
ok( defined $socket, 'IO::Socket::IP->new( PeerAddrInfo => ... ) constructs a new socket' ) or
|
|
Packit Service |
64bc36 |
diag( " error was $@" );
|
|
Packit Service |
64bc36 |
|
|
Packit Service |
64bc36 |
is_deeply( [ unpack_sockaddr_in $socket->peername ],
|
|
Packit Service |
64bc36 |
[ unpack_sockaddr_in $testserver->sockname ],
|
|
Packit Service |
64bc36 |
'$socket->peername' );
|
|
Packit Service |
64bc36 |
}
|
|
Packit Service |
64bc36 |
|
|
Packit Service |
64bc36 |
{
|
|
Packit Service |
64bc36 |
my ( $err, @localaddrinfo ) = getaddrinfo( "127.0.0.1", 0, { socktype => SOCK_STREAM } );
|
|
Packit Service |
64bc36 |
$err and die "Cannot getaddrinfo 127.0.0.1 - $err";
|
|
Packit Service |
64bc36 |
|
|
Packit Service |
64bc36 |
my $socket = IO::Socket::IP->new(
|
|
Packit Service |
64bc36 |
Listen => 1,
|
|
Packit Service |
64bc36 |
LocalAddrInfo => \@localaddrinfo,
|
|
Packit Service |
64bc36 |
);
|
|
Packit Service |
64bc36 |
|
|
Packit Service |
64bc36 |
ok( defined $socket, 'IO::Socket::IP->new( LocalAddrInfo => ... ) constructs a new socket' ) or
|
|
Packit Service |
64bc36 |
diag( " error was $@" );
|
|
Packit Service |
64bc36 |
|
|
Packit Service |
64bc36 |
my $testclient = IO::Socket::INET->new(
|
|
Packit Service |
64bc36 |
PeerHost => "127.0.0.1",
|
|
Packit Service |
64bc36 |
PeerPort => $socket->sockport,
|
|
Packit Service |
64bc36 |
) or die "Cannot connect to localhost - $@";
|
|
Packit Service |
64bc36 |
|
|
Packit Service |
64bc36 |
is_deeply( [ unpack_sockaddr_in $socket->sockname ],
|
|
Packit Service |
64bc36 |
[ unpack_sockaddr_in $testclient->peername ],
|
|
Packit Service |
64bc36 |
'$socket->sockname' );
|
|
Packit Service |
64bc36 |
}
|
|
Packit Service |
64bc36 |
|
|
Packit Service |
64bc36 |
done_testing;
|