X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FDaemon.pm;h=48051f488b6c5bbd08408c291794cc9a041a9c86;hb=c539d9df124a66f07edbae2bc51177a0f756cc95;hp=6aa4a1943044ca4002eb38e84e0c470b7e734058;hpb=f9eba5de3cc2f43d3ef5b9ec1379934b4158e5e6;p=public-inbox.git diff --git a/lib/PublicInbox/Daemon.pm b/lib/PublicInbox/Daemon.pm index 6aa4a194..48051f48 100644 --- a/lib/PublicInbox/Daemon.pm +++ b/lib/PublicInbox/Daemon.pm @@ -236,16 +236,23 @@ sub sockname ($) { sub unpack_ipv6 ($) { my ($addr) = @_; + my ($port, $host); - # TODO: support IO::Socket::IP which comes with Perl 5.24 - # (perl-modules-5.24 in Debian) + # Socket.pm in Perl 5.14+ supports IPv6: + eval { + ($port, $host) = Socket::unpack_sockaddr_in6($addr); + $host = Socket::inet_ntop(Socket::AF_INET6(), $host); + }; - # SpamAssassin and Net::Server use Socket6, so it may be installed - # on our system, already: - eval { require Socket6 } or return ('???-Socket6-missing', 0); + if ($@) { + # Perl 5.12 or earlier? SpamAssassin and Net::Server use + # Socket6, so it may be installed on our system, already + # (otherwise die here): + require Socket6; - my ($port, $host) = Socket6::unpack_sockaddr_in6($addr); - $host = Socket6::inet_ntop(Socket6::AF_INET6(), $host); + ($port, $host) = Socket6::unpack_sockaddr_in6($addr); + $host = Socket6::inet_ntop(Socket6::AF_INET6(), $host); + } ($host, $port); }