aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/url.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/lib/url.c b/lib/url.c
index 7e771e75f..0a01e54d2 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -1232,7 +1232,7 @@ static CURLcode ConnectPlease(struct UrlData *data,
FD_ZERO (&connectfd);
FD_SET(conn->firstsocket, &connectfd);
if (conn->data->connecttimeout > 0) {
- nonblock = 1;
+ nonblock = 1;
}
ioctlsocket(conn->firstsocket, FIONBIO, &nonblock);
#endif
@@ -1241,14 +1241,18 @@ static CURLcode ConnectPlease(struct UrlData *data,
sizeof(conn->serv_addr)
) < 0) {
#if defined(WIN32)
- conntimeout.tv_sec = conn->data->connecttimeout;
- conntimeout.tv_usec = 0;
- if(-1 != select (conn->firstsocket + 1, NULL, &connectfd, NULL, &conntimeout)) {
- if (FD_ISSET(conn->firstsocket, &connectfd))
- return CURLE_OK;
- else
- errno = EINTR;
- }
+ conntimeout.tv_sec = conn->data->connecttimeout;
+ conntimeout.tv_usec = 0;
+ if(-1 != select (conn->firstsocket + 1, NULL, &connectfd, NULL, &conntimeout)) {
+ if (FD_ISSET(conn->firstsocket, &connectfd)) {
+ /* shut off non-blocking again */
+ nonblock = 0;
+ ioctlsocket(conn->firstsocket, FIONBIO, &nonblock);
+ return CURLE_OK;
+ }
+ else
+ errno = EINTR;
+ }
#endif
switch(errno) {
#ifdef ECONNREFUSED