Package: resource-agents Severity: grave Tags: upstream patch ldirectord failed to start, with following error:
Subroutine main::pack_sockaddr_in6 redefined at /usr/share/perl/5.14/Exporter.pm line 67. at /usr/sbin/ldirectord line 831 Subroutine main::unpack_sockaddr_in6 redefined at /usr/share/perl/5.14/Exporter.pm line 67. at /usr/sbin/ldirectord line 831 Subroutine main::sockaddr_in6 redefined at /usr/share/perl/5.14/Exporter.pm line 67. at /usr/sbin/ldirectord line 831 Subroutine main::pack_sockaddr_in6 redefined at /usr/sbin/ldirectord line 3060 Subroutine main::unpack_sockaddr_in6 redefined at /usr/sbin/ldirectord line 3060 Subroutine main::sockaddr_in6 redefined at /usr/sbin/ldirectord line 3060 Subroutine main::pack_sockaddr_in6 redefined at /usr/share/perl/5.14/Exporter.pm line 67. at /usr/sbin/ldirectord line 831 Subroutine main::unpack_sockaddr_in6 redefined at /usr/share/perl/5.14/Exporter.pm line 67. at /usr/sbin/ldirectord line 831 Subroutine main::sockaddr_in6 redefined at /usr/share/perl/5.14/Exporter.pm line 67. at /usr/sbin/ldirectord line 831 Subroutine main::pack_sockaddr_in6 redefined at /usr/sbin/ldirectord line 3060 Subroutine main::unpack_sockaddr_in6 redefined at /usr/sbin/ldirectord line 3060 Subroutine main::sockaddr_in6 redefined at /usr/sbin/ldirectord line 3060 After comment out `use Socket6;`, got following error: Bareword "NI_NUMERICHOST" not allowed while "strict subs" in use at /usr/sbin/ldirectord line 5046. Bareword "NI_NUMERICSERV" not allowed while "strict subs" in use at /usr/sbin/ldirectord line 5046. Execution of /usr/sbin/ldirectord aborted due to compilation errors. Additional dependency required: libsocket-getaddrinfo-perl -- System Information: Debian Release: wheezy/sid APT prefers unstable APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable'), (300, 'experimental') Architecture: amd64 (x86_64) Kernel: Linux 3.2.0-2-amd64 (SMP w/2 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash
Description: <short summary of the patch> TODO: Put a short summary on the line above and replace this paragraph with a longer explanation of this change. Complete the meta-information with other relevant fields (see below for details). To make it easier, the information below has been extracted from the changelog. Adjust it or drop it. . resource-agents (1:3.9.2-5) unstable; urgency=high . * debian/control: Fix the Conflicts and Replaces lines of resource-agents to make sure that cluster-agents and resource-agents are mutually exclusive. Setting the urgency to high because this bug keeps people from running the whole clusterstack (Closes: #646110) * debian/patches/ocf-asterisk: Include the Asterisk PBX OCF resource agent written by Florian Haas, Andreas Kurz and me, sponsored by hastexo Author: Martin Loschwitz <madk...@debian.org> Bug-Debian: http://bugs.debian.org/646110 --- The information above should follow the Patch Tagging Guidelines, please checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here are templates for supplementary fields that you might want to add: Origin: <vendor|upstream|other>, <url of original patch> Bug: <url in upstream bugtracker> Bug-Debian: http://bugs.debian.org/<bugnumber> Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber> Forwarded: <no|not-needed|url proving that it has been forwarded> Reviewed-By: <name and email of someone who approved the patch> Last-Update: <YYYY-MM-DD> Index: resource-agents-3.9.2/ldirectord/ldirectord.in =================================================================== --- resource-agents-3.9.2.orig/ldirectord/ldirectord.in 2012-06-04 13:24:40.000000000 +0800 +++ resource-agents-3.9.2/ldirectord/ldirectord.in 2012-06-04 14:16:33.994237831 +0800 @@ -828,7 +828,8 @@ #use English; #use Time::HiRes qw( gettimeofday tv_interval ); use Socket; -use Socket6; +use Socket::GetAddrInfo qw( getaddrinfo getnameinfo NI_NUMERICHOST NI_NUMERICSERV NI_NAMEREQD ); +#use Socket6; use Sys::Hostname; use POSIX qw(setsid :sys_wait_h); use Sys::Syslog qw(:DEFAULT setlogsock); @@ -5039,17 +5040,21 @@ if ($name =~ /\[(.*)\]/) { $name = $1; } - my @host = getaddrinfo($name, 0, $af); - if (!defined($host[3])) { - return undef; - } - my @ret = getnameinfo($host[3], NI_NUMERICHOST | NI_NUMERICSERV); - if ($host[0] == AF_INET6) { - return "[$ret[0]]"; - } - else { - return $ret[0]; + my %hints = ( family => $af ); + my ( $err, @res ) = getaddrinfo($name, 0, \%hints); + return undef if ($err); + while( my $ai = shift @res ) { + my ( $err, $hostname, $servicename ) = getnameinfo( $ai->{addr} ); + if (!$err) { + if ($ai->{family} == AF_INET6) { + return "[$hostname]"; + } + else { + return $hostname; + } + } } + return undef; } # ld_gethostbyaddr @@ -5064,13 +5069,13 @@ my ($ip)=(@_); $ip = &ld_strip_brackets($ip); - my @host = getaddrinfo($ip,0); - if (!defined($host[3])) { - return undef; + my ( $err, @res ) = getaddrinfo($ip,0); + return undef if ($err); + while( my $ai = shift @res ) { + my ( $err, $host, $service ) = getnameinfo($ai->{addr}, NI_NAMEREQD); + return $host unless($err); } - my @ret = getnameinfo($host[3], NI_NAMEREQD); - return undef unless(scalar(@ret) == 2); - return $ret[0]; + return undef; } # ld_getservbyname