From: Daniel Stenberg Date: Mon, 17 Oct 2011 20:01:09 +0000 (+0200) Subject: singleipconnect: unstick the ipv6-connection boolean X-Git-Tag: curl-7_23_0~65 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ecbb08cea3cd67406c49572eeb4f456dfc94cca2;p=curl singleipconnect: unstick the ipv6-connection boolean Previously the bit was set before the connection was found working so if it would first fail to an ipv6 address and then connect fine to a IPv4 address the variable would still be TRUE. Reported by: Thomas L. Shinnick Bug: http://curl.haxx.se/bug/view.cgi?id=3421912 --- diff --git a/lib/connect.c b/lib/connect.c index 309ba355a..2a1876e71 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -907,11 +907,6 @@ singleipconnect(struct connectdata *conn, Curl_persistconninfo(conn); -#ifdef ENABLE_IPV6 - if(addr.family == AF_INET6) - conn->bits.ipv6 = TRUE; -#endif - if(data->set.tcp_nodelay) tcpnodelay(conn, sockfd); @@ -999,6 +994,10 @@ singleipconnect(struct connectdata *conn, /* we are connected, awesome! */ *connected = TRUE; /* this is a true connect */ infof(data, "connected\n"); +#ifdef ENABLE_IPV6 + conn->bits.ipv6 = (addr.family == AF_INET6)?TRUE:FALSE; +#endif + Curl_updateconninfo(conn, sockfd); *sockp = sockfd; return CURLE_OK;