diff options
author | Daniel Stenberg <daniel@haxx.se> | 2012-04-19 23:31:50 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2012-04-19 23:31:50 +0200 |
commit | 5cd524df187cbb2414d518f8933894399edbf572 (patch) | |
tree | 072cb77e2242bfd35ca688dbc3bd00dc0c345493 | |
parent | 94111bbbd4f2c875bc33c9c84f6e365c1a1434d7 (diff) |
singleipconnect: return OK even when Curl_socket() fails
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
-rw-r--r-- | lib/connect.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/connect.c b/lib/connect.c index 2d592291d..42b626f1a 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -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, |