message_list => [],
};
+ # IO::Socket::IP is on the core module list, IO::Socket::INET6 isn't.
+ # However, IO::Socket::INET6 is older and is said to be more widely
+ # deployed for the moment, and may have less bugs, so we try the latter
+ # first, then fall back on the code modules. Worst case scenario, we
+ # fall back to IO::Socket::INET, only supports IPv4.
eval {
- require IO::Socket::IP;
- my $s = IO::Socket::IP->new(
+ require IO::Socket::INET6;
+ my $s = IO::Socket::INET6->new(
LocalAddr => "::1",
LocalPort => 0,
Listen=>1,
$s->close();
};
if ($@ eq "") {
- # IO::Socket::IP supports IPv6 and is in the core modules list
- $IP_factory = sub { IO::Socket::IP->new(@_); };
+ $IP_factory = sub { IO::Socket::INET6->new(@_); };
$have_IPv6 = 1;
} else {
eval {
- require IO::Socket::INET6;
- my $s = IO::Socket::INET6->new(
+ require IO::Socket::IP;
+ my $s = IO::Socket::IP->new(
LocalAddr => "::1",
LocalPort => 0,
Listen=>1,
$s->close();
};
if ($@ eq "") {
- # IO::Socket::INET6 supports IPv6 but isn't on the core modules list
- # However, it's a bit older and said to be more widely deployed
- # at the time of writing this comment.
- $IP_factory = sub { IO::Socket::INET6->new(@_); };
+ $IP_factory = sub { IO::Socket::IP->new(@_); };
$have_IPv6 = 1;
} else {
- # IO::Socket::INET doesn't support IPv6 but is a fallback in case
- # we have no other.
$IP_factory = sub { IO::Socket::INET->new(@_); };
}
}