ports/net/p5-SNMP_Session/patches/patch-lib_SNMP_Session_pm

44 lines
1.7 KiB
Text

--- lib/SNMP_Session.pm.orig Fri Nov 21 05:25:17 2008
+++ lib/SNMP_Session.pm Fri May 3 13:11:57 2013
@@ -144,9 +144,8 @@ BEGIN {
$SNMP_Session::ipv6available = 0;
$dont_wait_flags = 0;
- if (eval {local $SIG{__DIE__};require Socket6;} &&
- eval {local $SIG{__DIE__};require IO::Socket::INET6; IO::Socket::INET6->VERSION("1.26");}) {
- import Socket6;
+ if (eval {local $SIG{__DIE__};require IO::Socket::INET6; IO::Socket::INET6->VERSION("1.26");}) {
+ Socket->import(qw(getaddrinfo inet_pton inet_ntop));
$ipv6_addr_len = length(pack_sockaddr_in6(161, inet_pton(AF_INET6(), "::1")));
$SNMP_Session::ipv6available = 1;
}
@@ -605,7 +604,7 @@ use Carp;
BEGIN {
if($SNMP_Session::ipv6available) {
import IO::Socket::INET6;
- import Socket6;
+ Socket->import(qw(getaddrinfo inet_pton inet_ntop));
}
}
@@ -659,13 +658,13 @@ sub open {
$remote_hostname = $1;
}
- my (@res, $socktype_tmp, $proto_tmp, $canonname_tmp);
- @res = getaddrinfo($remote_hostname, $port, AF_UNSPEC, SOCK_DGRAM);
- ($sockfamily, $socktype_tmp, $proto_tmp, $remote_addr, $canonname_tmp) = @res;
- if (scalar(@res) < 5) {
- return $this->error_return ("can't resolve \"$remote_hostname\" to IPv6 address");
- }
-
+ my ($err, @res) = getaddrinfo($remote_hostname, $port, {socktype => SOCK_DGRAM});
+ return $this->error_return ("can't resolve \"$remote_hostname\" to IPv6 address - $err") if ($err);
+ # XXX only looks at first address returned
+ # XXX this should actually cycle through them
+ my $ai = shift @res;
+ $sockfamily = $ai->{family};
+ $remote_addr = $ai->{addr};
if ($SNMP_Session::recycle_socket && exists $the_socket{$sockfamily}) {
$socket = $the_socket{$sockfamily};
} elsif ($sockfamily == AF_INET) {