Return-Path: Delivered-To: apmail-apr-cvs-archive@www.apache.org Received: (qmail 89448 invoked from network); 4 Mar 2004 16:17:28 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (208.185.179.12) by minotaur-2.apache.org with SMTP; 4 Mar 2004 16:17:28 -0000 Received: (qmail 66814 invoked by uid 500); 4 Mar 2004 16:17:22 -0000 Delivered-To: apmail-apr-cvs-archive@apr.apache.org Received: (qmail 66744 invoked by uid 500); 4 Mar 2004 16:17:22 -0000 Mailing-List: contact cvs-help@apr.apache.org; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Reply-To: dev@apr.apache.org Delivered-To: mailing list cvs@apr.apache.org Received: (qmail 66660 invoked from network); 4 Mar 2004 16:17:20 -0000 Date: 4 Mar 2004 16:17:25 -0000 Message-ID: <20040304161725.89391.qmail@minotaur.apache.org> From: jorton@apache.org To: apr-cvs@apache.org Subject: cvs commit: apr/network_io/unix sockaddr.c X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N jorton 2004/03/04 08:17:25 Modified: network_io/unix sockaddr.c Log: Workaround odd behaviour of AF_UNSPEC lookups with AI_PASSIVE set on some old versions of glibc: * network_io/sockets/sockaddr.c (call_resolver): Ignore anything other than AF_INET and AF_INET6 addresses. Revision Changes Path 1.49 +11 -1 apr/network_io/unix/sockaddr.c Index: sockaddr.c =================================================================== RCS file: /home/cvs/apr/network_io/unix/sockaddr.c,v retrieving revision 1.48 retrieving revision 1.49 diff -w -d -u -r1.48 -r1.49 --- sockaddr.c 13 Feb 2004 09:38:33 -0000 1.48 +++ sockaddr.c 4 Mar 2004 16:17:25 -0000 1.49 @@ -352,7 +352,17 @@ prev_sa = NULL; ai = ai_list; while (ai) { /* while more addresses to report */ - apr_sockaddr_t *new_sa = apr_pcalloc(p, sizeof(apr_sockaddr_t)); + apr_sockaddr_t *new_sa; + + /* Ignore anything bogus: getaddrinfo in some old versions of + * glibc will return AF_UNIX entries for AF_UNSPEC+AI_PASSIVE + * lookups. */ + if (ai->ai_family != AF_INET && ai->ai_family != AF_INET6) { + ai = ai->ai_next; + continue; + } + + new_sa = apr_pcalloc(p, sizeof(apr_sockaddr_t)); new_sa->pool = p; memcpy(&new_sa->sa, ai->ai_addr, ai->ai_addrlen);