Add extra protection against internal perl error on IPv6 lookup

This commit is contained in:
Jamie Cameron
2021-03-15 23:54:10 -07:00
parent f8ae8c81fb
commit 44b98ef4fc

View File

@@ -3348,16 +3348,18 @@ elsif (!&supports_ipv6()) {
}
else {
# Perform IPv6 DNS lookup
my @ai = getaddrinfo($host, undef, AF_INET6(), SOCK_STREAM);
while(@ai) {
my @newia;
(undef, undef, undef, $inaddr, undef, @newai) = @ai;
if ($inaddr) {
my $addr;
(undef, $addr) = unpack_sockaddr_in6($inaddr);
push(@rv, inet_ntop(AF_INET6(), $addr));
eval {
my @ai = getaddrinfo($host, undef, AF_INET6(), SOCK_STREAM);
while(@ai) {
my @newia;
(undef, undef, undef, $inaddr, undef, @newai) = @ai;
if ($inaddr) {
my $addr;
(undef, $addr) = unpack_sockaddr_in6($inaddr);
push(@rv, inet_ntop(AF_INET6(), $addr));
}
@ai = @newai;
}
@ai = @newai;
}
}
return wantarray ? @rv : $rv[0];