Subject: | Tests fail with IPv6 |
Hi all,
Trying to build Net::IMAP::Server for Debian, we have the following problem (with some debug output):
# prove --blib --verbose t/01-connect.t
t/01-connect.t ..
ok 1 - Server started
$VAR1 = 'CONNECT1: ';
$VAR2 = 'PeerAddr';
$VAR3 = 'localhost';
$VAR4 = 'PeerPort';
$VAR5 = 67188;
$VAR6 = 'Class';
$VAR7 = 'IO::Socket::INET';
$VAR1 = 'CONNECT2: ';
$VAR2 = undef;
$VAR1 = 'CONNECT2: ';
$VAR2 = undef;
# 2013/05/12-14:50:34 Net::IMAP::Server::Test::Server (type Net::Server) starting! pid(32595)
# Resolved [localhost]:67188 to [::1]:1652, IPv6
# Resolved [localhost]:67188 to [127.0.0.1]:1652, IPv4
# Resolved [localhost]:67189 to [::1]:1653, IPv6
# Resolved [localhost]:67189 to [127.0.0.1]:1653, IPv4
# Binding to TCP port 1652 on host ::1 with IPv6
# Binding to TCP port 1652 on host 127.0.0.1 with IPv4
# Binding to TCP port 1653 on host ::1 with IPv6
# Binding to TCP port 1653 on host 127.0.0.1 with IPv4
# Setting gid to "0 0 0"
$VAR1 = 'CONNECT2: ';
$VAR2 = bless( \*Symbol::GEN2, 'IO::Socket::INET' );
ok 2 - Non-SSL connection OK
$VAR1 = 'connect_ok: ';
$VAR2 = 'Class';
$VAR3 = 'IO::Socket::INET';
$VAR4 = 'PeerPort';
$VAR5 = 67188;
ok 3 - Got connection message
ok 4 - Line 1 of STARTTLS response matched
ok 5 - Negotiated TLS
$VAR1 = 'CONNECT1: ';
$VAR2 = 'PeerAddr';
$VAR3 = 'localhost';
$VAR4 = 'PeerPort';
$VAR5 = 67189;
$VAR6 = 'Class';
$VAR7 = 'IO::Socket::SSL';
Bad arg length for Socket::unpack_sockaddr_in, length is 28, should be 16 at /usr/lib/perl5/Socket.pm line 824.
+ so the problem happens in t/01-connect in the '$t->connect_ok( "SSL
connection OK" );' test
+ IO::Socket::SSL fails here, although it should be able to handle ipv6
(relevant packaes are installed)
+ I _guess_ this is somehow related to to the doubled socket binding seen
above
+ this comes somewhere from Net::Server or Net::Server::Coro ...
/usr/share/perl5/Net/Server.pod talks about ipv4/6 and looks like it
should work; so maybe it's Net::Server::Coro doing weird things here?
or Net::Server::Proto::Coro or Coro::Socket ...
(Coro::Socket has a nice warning about IPv6 in the pod)
the following from Net::Server's pod looks ok:
# perl -e 'use base qw(Net::Server); main->run(host => "localhost")'
2013/05/12-14:54:56 main (type Net::Server) starting! pid(4632)
Resolved [localhost]:20203 to [::1]:20203, IPv6
Resolved [localhost]:20203 to [127.0.0.1]:20203, IPv4
Binding to TCP port 20203 on host ::1 with IPv6
Binding to TCP port 20203 on host 127.0.0.1 with IPv4