From: Adam Dickmeiss Date: Thu, 7 May 2009 18:55:04 +0000 (+0200) Subject: Prefer IPV6 addresses over IPV4 - should refix bug #2350. X-Git-Tag: v3.0.45.rhel53~2 X-Git-Url: http://lists.indexdata.dk/?a=commitdiff_plain;h=cf6e35300ec51e0bad1424aba7e83225fd168f8b;p=yaz-moved-to-github.git Prefer IPV6 addresses over IPV4 - should refix bug #2350. --- diff --git a/src/tcpip.c b/src/tcpip.c index 715d0cf..416b707 100644 --- a/src/tcpip.c +++ b/src/tcpip.c @@ -434,14 +434,31 @@ void *tcpip_straddr(COMSTACK h, const char *str) if (sp->ai && h->state == CS_ST_UNBND) { int s = -1; - struct addrinfo *ai = sp->ai; - for (; ai; ai = ai->ai_next) + struct addrinfo *ai; + /* try to make IPV6 socket first */ + for (ai = sp->ai; ai; ai = ai->ai_next) { - s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); - if (s != -1) + if (ai->ai_family == AF_INET6) { - sp->ai = ai; - break; + s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); + if (s != -1) + { + sp->ai = ai; + break; + } + } + } + if (s == -1) + { + /* no IPV6 could be made.. Try them all */ + for (ai = sp->ai; ai; ai = ai->ai_next) + { + s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); + if (s != -1) + { + sp->ai = ai; + break; + } } } if (s == -1)