summaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2016-02-14 07:10:38 +0100
committerRichard Levitte <levitte@openssl.org>2016-02-14 07:39:23 +0100
commit98ac876f2ded90de8c9d9bc9d7b33a965f7d9f9a (patch)
tree6f63f1ae520993ffb8d3d7d3392c4e8ede7c39ba /util
parentc8d1c9b06768bab700a3364639614202842eea42 (diff)
Prefer IO::Socket::INET6 over IO::Socket::IP
While IO::Socket::IP is a core perl module (since Perl v5.19.8, or so says corelist), IO::Socket::INET6 has been around longer, is said to be more widely deployed, and most importantly, seems to have less bugs hitting us. We therefore prefer IO::Socket::INET6, and only fall back to IO::Socket::IP if the former doesn't exist on the local system. Reviewed-by: Viktor Dukhovni <viktor@openssl.org>
Diffstat (limited to 'util')
-rw-r--r--util/TLSProxy/Proxy.pm23
1 files changed, 11 insertions, 12 deletions
diff --git a/util/TLSProxy/Proxy.pm b/util/TLSProxy/Proxy.pm
index 45871b8748..9883901b94 100644
--- a/util/TLSProxy/Proxy.pm
+++ b/util/TLSProxy/Proxy.pm
@@ -98,9 +98,14 @@ sub new
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,
@@ -109,13 +114,12 @@ sub new
$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,
@@ -124,14 +128,9 @@ sub new
$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(@_); };
}
}