On Mar 2, 2011, at 18:37 , Quanah Gibson-Mount wrote:

> --On Tuesday, March 01, 2011 2:01 PM -0800 Quanah Gibson-Mount 
> <qua...@zimbra.com> wrote:
> 
>> --On Tuesday, March 01, 2011 1:46 PM -0800 Quanah Gibson-Mount
>> <qua...@zimbra.com> wrote:
>> 
>>> If I move the 10.11.12.13 address prior to all of the IPv6 pieces, it
>>> works fine.  Other IPv4 tools work without issue.  So if you see weird
>>> behavior out of Net::LDAP on IPv6 enabled systems even if you are only
>>> dealing with IPv4, this may be the cause.
>> 
>> To clarify slightly -- It has to do with the hostname.  Specifying a URI
>> of ldap://<hostname>:389/ fails.  Specifying a URI with the IPv4 address
>> works.  So something is broken in how IO::Socket is determining the IPv4
>> address for the hostname.
> 
> After a bit of debugging, the root problem is Perl's implementation of 
> inet_aton.  I've filed a bug with Perl core.

I think it is partly some fault of Net::LDAP

Net::LDAP will use IO::Socket::INET or IO::Socket::INET6 to connect depending 
on if the inet6 option is passed to connect

::INET will only connect to v4 addresses but I believe ::INET6 will connect to 
either. But there is no guarantee ::INET6 exists

Hm, I wonder if we should just select the default connecting class by

my $connect_class = eval { require IO::Socket::INET6 } ? "IO::Socket::INET6" : 
"IO::Socket::INET";

Graham.

Reply via email to