I tracked this down to the resolution of an unspecified local
address. On some systems, getaddrinfo('',0,0,2,17,1) returns
127.0.0.1, then ::1; on other systems, it's vice versa. The order
apparently depends on /etc/gai.conf; apparently, there was also
a recent change in the library defaults (to return IPv4 before
v6).

INET6 determines that the remote address is IPv6, and creates
an IPv6 socket. It then tries to bind it to '' (as no local
address was given); this determines that '' is an IPv4 address,
so binding fails.

I think the real error is that it tries to bind at all even
if no local address or port was given. It does so because
lres is defined, i.e. because it was able to resolve the
name '' (around line 211). As it is overwriting laddr for Win32,
it should remember the value of laddr before that, and then
bind only if either laddr or lport were given.

If no local address was given, but a local port, binding needs
to occur, but it needs to consider the server address family,
so it needs to redo getaddrinfo (passing AI_NUMERICHOST to avoid
name lookups).



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to