In bind_port(), stop hinting AI_ADDRCONFIG to getaddrinfo()
authorFabian Keil <fk@fabiankeil.de>
Mon, 4 Jul 2011 17:47:29 +0000 (17:47 +0000)
committerFabian Keil <fk@fabiankeil.de>
Mon, 4 Jul 2011 17:47:29 +0000 (17:47 +0000)
It's not strictly needed there and causes GNU libc to fail to
return loopback addresses if no non-loopback IP address is
configured on the system. Apparently this is the result of a
somewhat strict but valid interpretation of RFC 3493 and
considered a feature. Sad but true.

This is mainly an issue if the system is using DHCP and Privoxy
is started before the network is completely configured.

Reported by Raphael Marichez in #3349356.
Additional insight from Petr Pisar.

jbsockets.c

index ecd5bd4..b00d514 100644 (file)
@@ -1,4 +1,4 @@
-const char jbsockets_rcs[] = "$Id: jbsockets.c,v 1.102 2011/05/03 10:11:24 fabiankeil Exp $";
+const char jbsockets_rcs[] = "$Id: jbsockets.c,v 1.103 2011/06/23 13:58:22 fabiankeil Exp $";
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/jbsockets.c,v $
@@ -772,9 +772,6 @@ int bind_port(const char *hostnam, int portnum, jb_socket *pfd)
    }
    hints.ai_socktype = SOCK_STREAM;
    hints.ai_flags = AI_PASSIVE;
-#ifdef AI_ADDRCONFIG
-   hints.ai_flags |= AI_ADDRCONFIG;
-#endif
    hints.ai_protocol = 0; /* Really any stream protocol or TCP only */
    hints.ai_canonname = NULL;
    hints.ai_addr = NULL;