]> granicus.if.org Git - curl/commitdiff
singleipconnect: return OK even when Curl_socket() fails
authorDaniel Stenberg <daniel@haxx.se>
Thu, 19 Apr 2012 21:31:50 +0000 (23:31 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 19 Apr 2012 21:31:50 +0000 (23:31 +0200)
Commit 9109cdec11ee5a brought this regression (shipped since 7.24.0).

The singleipconnect() function must not return an error if Curl_socket()
returns an error. It should then simply return OK and pass a SOCKET_BAD
back simply because that is how the user of this function expects it to
work and something else is not fine.

Reported by: Blaise Potard
Bug: http://curl.haxx.se/bug/view.cgi?id=3516508

lib/connect.c

index 2d592291d6688ba6a36801fb9be086bf935117d7..42b626f1a1e249d7c9218ee9c50b4114d6fa56bb 100644 (file)
@@ -881,7 +881,10 @@ singleipconnect(struct connectdata *conn,
 
   res = Curl_socket(conn, ai, &addr, &sockfd);
   if(res)
-    return res;
+    /* Failed to create the socket, but still return OK since we signal the
+       lack of socket as well. This allows the parent function to keep looping
+       over alternative addresses/socket families etc. */
+    return CURLE_OK;
 
   /* store remote address and port used in this connection attempt */
   if(!getaddressinfo((struct sockaddr*)&addr.sa_addr,