Don't use AI_ADDRCONFIG.
authorEmil Mikulic <emikulic@gmail.com>
Thu, 9 Jun 2011 11:55:22 +0000 (21:55 +1000)
committerEmil Mikulic <emikulic@gmail.com>
Thu, 9 Jun 2011 12:08:24 +0000 (22:08 +1000)
Malte says without this:

It fails with "Address family for hostname not supported: Device or
resource busy" if IPv6 is requested (eg. if no bind address was
specified under Linux) but no interface has IPv6 configured (::1/128
and fe80::/64 do not count).

http.c

diff --git a/http.c b/http.c
index fc8efd3..6274b9b 100644 (file)
--- a/http.c
+++ b/http.c
@@ -894,9 +894,6 @@ static struct addrinfo *get_bind_addr(
 #endif
     hints.ai_socktype = SOCK_STREAM;
     hints.ai_flags = AI_PASSIVE;
 #endif
     hints.ai_socktype = SOCK_STREAM;
     hints.ai_flags = AI_PASSIVE;
-#ifdef AI_ADDRCONFIG
-    hints.ai_flags |= AI_ADDRCONFIG;
-#endif
     snprintf(portstr, sizeof(portstr), "%u", bindport);
     if ((ret = getaddrinfo(bindaddr, portstr, &hints, &ai)))
         err(1, "getaddrinfo(%s,%s) failed: %s",
     snprintf(portstr, sizeof(portstr), "%u", bindport);
     if ((ret = getaddrinfo(bindaddr, portstr, &hints, &ai)))
         err(1, "getaddrinfo(%s,%s) failed: %s",