spamhaus / rbldnsd

A small and fast DNS daemon especially made to serve DNSBL zones.
https://rbldnsd.io/
GNU General Public License v2.0
57 stars 12 forks source link

Merge the remainder of Jeff Dairiki's "ipv6" branch #3

Closed orlitzky closed 7 years ago

orlitzky commented 7 years ago

This would merge the remainder of the ipv6 branch from @dairiki. There was a tiny conflict in the NEWS file, so I commented on the changes in my merge commit. We've been carrying this as a patch for over... two years now, on Gentoo, where people regularly build python sans ipv6 support. No problems have been reported.

In the interest of full disclosure, the additional changes were rejected by Michael Tokarev. However, if you refer back to the mailing list thread, I got the impression that the rejection was of the "it's not worth the trouble" sort. So, if you are willing to review the additional commits, that concern may be abated =)

The gethostbyname() thing is a general "papercut" fix that applies even outside of the test suite.

spamhaus commented 7 years ago

Hello Michael, i have read the mailing list thread dating back to 2013.

In general i agree that the patch relating to the test suite is harmless and could be merged.

I'm still uncertain of what to do about the patch fixing the double binding problem. Its not something that should be addressed in the code, imho, but in how you invoke rbldnsd.

AM

orlitzky commented 7 years ago

I would be happy to re-roll the pull request without that patch, but the problem it fixes is not so esoteric. If you build rbldnsd without ipv6 support, then "localhost" becomes a bad word and rbldnsd -b localhost/5300 ... will crash. You can work around that by specifying 127.0.0.1 instead, but should you really have to?

As Jeff mentioned in the ML thread, there are probably better ways to fix that problem. It's the deprecated gethostbyname() that is returning duplicate addresses. But rbldnsd still supports older systems, and so even though gethostbyname() is deprecated, it would require even more work to introduce a compatibility shim and use something newer (without the same problem).