diff --git a/lib/connect.c b/lib/connect.c index 3cbca1b503a626c1d90c2d1eefa90d3283cff27d..9c38724d63d30f1d218a09934a3e2974a432de66 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -560,12 +560,19 @@ static CURLcode trynextip(struct connectdata *conn, ai = conn->tempaddr[0]->ai_next; } - while(ai && ai->ai_family != family) - ai = ai->ai_next; - - if(ai) { - rc = singleipconnect(conn, ai, &conn->tempsock[tempindex]); - conn->tempaddr[tempindex] = ai; + while(ai) { + while(ai && ai->ai_family != family) + ai = ai->ai_next; + + if(ai) { + rc = singleipconnect(conn, ai, &conn->tempsock[tempindex]); + conn->tempaddr[tempindex] = ai; + if(rc == CURLE_COULDNT_CONNECT) { + ai = ai->ai_next; + continue; + } + } + break; } }