return 0;
/* WSAEventSelect automatically sets the socket in non-blocking mode */
- WSAEventSelect(ptr->socket, ptr->hEvent, FD_READ | FD_WRITE | FD_CLOSE);
+ if (WSAEventSelect(ptr->socket, ptr->hEvent, FD_READ | FD_WRITE | FD_CLOSE))
+ {
+ WLog_ERR(TAG, "WSAEventSelect returned %08X", WSAGetLastError());
+ return 0;
+ }
return 1;
}
HANDLE handles[2];
int status = 0;
int count = 0;
+ u_long arg = 0;
DWORD tout = (timeout) ? timeout * 1000 : INFINITE;
handles[count] = CreateEvent(NULL, TRUE, FALSE, NULL);
{
WLog_ERR(TAG, "WSAEventSelect failed with %lX", WSAGetLastError());
return FALSE;
-}
+ }
handles[count++] = context->abortEvent;
return FALSE;
}
+ if (_ioctlsocket(sockfd, FIONBIO, &arg) != 0)
+ return FALSE;
+
return TRUE;
}
/* set socket in non-blocking mode */
- WSAEventSelect(sockfd, events[index], FD_READ | FD_WRITE | FD_CONNECT | FD_CLOSE);
+ if (WSAEventSelect(sockfd, events[index], FD_READ | FD_WRITE | FD_CONNECT | FD_CLOSE))
+ {
+ WLog_ERR(TAG, "WSAEventSelect returned %08X", WSAGetLastError());
+ continue;
+ }
/* non-blocking tcp connect */
for (index = 0; index < count; index++)
{
+ u_long arg = 0;
+
if (!sockfds[index])
continue;
sockfd = sockfds[index];
/* set socket in blocking mode */
+ if (WSAEventSelect(sockfd, NULL, 0))
+ {
+ WLog_ERR(TAG, "WSAEventSelect returned %08X", WSAGetLastError());
+ continue;
+ }
- WSAEventSelect(sockfd, NULL, 0);
+ if (_ioctlsocket(sockfd, FIONBIO, &arg))
+ {
+ WLog_ERR(TAG, "_ioctlsocket failed");
+ }
}
if ((sindex >= 0) && (sindex < count))