From: Shankar Jadhavar <52494079+sjadhavar@users.noreply.github.com> Date: Wed, 1 Mar 2023 09:02:08 +0000 (+0530) Subject: cf-socket: if socket is already connected, return CURLE_OK X-Git-Tag: curl-8_0_0~117 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=233810bb5f6c5e7bedfc10bdd36607b958c0cfe4;p=thirdparty%2Fcurl.git cf-socket: if socket is already connected, return CURLE_OK 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 --- diff --git a/lib/cf-socket.c b/lib/cf-socket.c index 69d7cbd5b8..d41206488e 100644 --- a/lib/cf-socket.c +++ b/lib/cf-socket.c @@ -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) {