From cf6e35300ec51e0bad1424aba7e83225fd168f8b Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Thu, 7 May 2009 20:55:04 +0200 Subject: [PATCH] Prefer IPV6 addresses over IPV4 - should refix bug #2350. --- src/tcpip.c | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) 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) -- 1.7.10.4