]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
cf-socket: if socket is already connected, return CURLE_OK
authorShankar Jadhavar <52494079+sjadhavar@users.noreply.github.com>
Wed, 1 Mar 2023 09:02:08 +0000 (14:32 +0530)
committerDaniel Stenberg <daniel@haxx.se>
Wed, 1 Mar 2023 10:52:18 +0000 (11:52 +0100)
In 7.87.0, if callback method for CURLOPT_SOCKOPTFUNCTION returns
CURL_SOCKOPT_ALREADY_CONNECTED then curl library used to return
CURLE_OK.  n 7.88.0, now even if callback returns
CURL_SOCKOPT_ALREADY_CONNECTED, curl library still tries to connect to
socket by invoking method do_connect().

This is regression caused by commit
https://github.com/curl/curl/commit/71b7e0161032927cdfb

Fix: Check if we are already connected and return CURLE_OK.

Fixes #10626
Closes #10648

lib/cf-socket.c

index 69d7cbd5b87510928cdc9e882275b69d056e61b8..d41206488e23adb3f062eac4a5429bc299ff3f60 100644 (file)
@@ -1071,6 +1071,11 @@ static CURLcode cf_tcp_connect(struct Curl_cfilter *cf,
     if(result)
       goto out;
 
+    if(cf->connected) {
+      *done = TRUE;
+      return CURLE_OK;
+    }
+
     /* Connect TCP socket */
     rc = do_connect(cf, data, cf->conn->bits.tcp_fastopen);
     if(-1 == rc) {