cf-socket: optimize curlx_nonblock() and check its return error

Reviewed-by: Stefan Eissing
Closes #13942
This commit is contained in:
Andy Pan 2024-06-13 21:28:01 +08:00 committed by Daniel Stenberg
parent 36e9222c42
commit bd8e45c6c5
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
2 changed files with 29 additions and 7 deletions

View file

@ -1234,12 +1234,25 @@ static CURLcode cf_socket_open(struct Curl_cfilter *cf,
#endif
#ifndef SOCK_NONBLOCK
/* set socket non-blocking */
(void)curlx_nonblock(ctx->sock, TRUE);
/* Set socket non-blocking, must be a non-blocking socket for
* a non-blocking connect. */
error = curlx_nonblock(ctx->sock, TRUE);
if(error < 0) {
result = CURLE_UNSUPPORTED_PROTOCOL;
ctx->error = SOCKERRNO;
goto out;
}
#else
if(data->set.fopensocket)
/* set socket non-blocking */
(void)curlx_nonblock(ctx->sock, TRUE);
if(data->set.fopensocket) {
/* Set socket non-blocking, must be a non-blocking socket for
* a non-blocking connect. */
error = curlx_nonblock(ctx->sock, TRUE);
if(error < 0) {
result = CURLE_UNSUPPORTED_PROTOCOL;
ctx->error = SOCKERRNO;
goto out;
}
}
#endif
ctx->sock_connected = (ctx->addr.socktype != SOCK_DGRAM);
out: