http://bugzilla.spamassassin.org/show_bug.cgi?id=4619





------- Additional Comments From [EMAIL PROTECTED]  2005-10-16 16:19 -------
John, we don't use AF_UNSPEC because it fails on some platforms as per bug 4412
comment 24, and the comments in DnsResolver.pm line 167.

Looking at the code in Net::DNS::Resolver::Base.pm, it appears to me that
another way to avoid that bug is to specify LocalAddr as being "::" for ipv6 or
"0.0.0.0" for ipv4 and then we can allow Domain to default to AF_UNSPEC. The
failure happens on some platforms when the LocalAddr and PeerAdddr are of
different families and Domain is AF_UNSPEC.

The resulting code would not be that different. Right now we check PeerAddr to
see if we need to be ipv6 or if it is an ipv4 address. We would still have to do
that. The only difference is instead of setting $family and passing in
Domain=>$family we would pass in a LocalAddr value of "::" or "0.0.0.0". That
may or may not have fixed Elan's problem because that was the result of a old
buggy version of IO::Socket::INET6. We would still want the creation of a dummy
socket to check for the case of IO::Socket::INET6 being broken. Perhaps we
should create two dummy sockets, one with ipv6 and one with ipv4 addresses just
to be sure, as that would let us gracefully handle a hosed version like Elan 
had.

The advantage of doing it that way is there would no longer be any reason to
refer to AF_INET6 and we could eliminate the tests to avoid referring to the
macro when it isn't defined.




------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

Reply via email to