Skip to content
Snippets Groups Projects
Commit 02209926 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

SM made the connection timeout work for windows boxes!

parent 870cea2a
No related branches found
No related tags found
No related merge requests found
......@@ -1060,6 +1060,11 @@ ConnectionStore(struct UrlData *data,
static CURLcode ConnectPlease(struct UrlData *data,
struct connectdata *conn)
{
#if defined(WIN32)
unsigned long nonblock = 0;
fd_set connectfd;
struct timeval conntimeout;
#endif
#ifndef ENABLE_IPV6
conn->firstsocket = socket(AF_INET, SOCK_STREAM, 0);
......@@ -1222,10 +1227,29 @@ static CURLcode ConnectPlease(struct UrlData *data,
return CURLE_COULDNT_CONNECT;
}
#else
/* non-zero nonblock value sets socket as nonblocking under Win32 */
#if defined(WIN32)
FD_ZERO (&connectfd);
FD_SET(conn->firstsocket, &connectfd);
if (conn->data->connecttimeout > 0) {
nonblock = 1;
}
ioctlsocket(conn->firstsocket, FIONBIO, &nonblock);
#endif
if (connect(conn->firstsocket,
(struct sockaddr *) &(conn->serv_addr),
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;
}
#endif
switch(errno) {
#ifdef ECONNREFUSED
/* this should be made nicer */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment