Timeout.tv_sec=0;
Timeout.tv_usec=0;
- WSPSelect(0, &ReadSet, NULL, NULL, &Timeout, NULL);
+ if (WSPSelect(0, &ReadSet, NULL, NULL, &Timeout, lpErrno) == SOCKET_ERROR)
+ {
+ NtClose(SockEvent);
+ return INVALID_SOCKET;
+ }
if (ReadSet.fd_array[0] != Socket->Handle)
{
NtClose(SockEvent);
- return 0;
+ *lpErrno = WSAEWOULDBLOCK;
+ return INVALID_SOCKET;
}
/* Send IOCTL */
&ProtocolInfo,
GroupID,
Socket->SharedData.CreateFlags,
- NULL);
+ lpErrno);
+ if (AcceptSocket == INVALID_SOCKET)
+ return INVALID_SOCKET;
/* Set up the Accept Structure */
AcceptData.ListenHandle = (HANDLE)AcceptSocket;
/* Deactive WSPEventSelect */
if (Socket->SharedData.AsyncEvents)
{
- WSPEventSelect(Handle, NULL, 0, NULL);
+ if (WSPEventSelect(Handle, NULL, 0, lpErrno) == SOCKET_ERROR)
+ {
+ HeapFree(GetProcessHeap(), 0, AsyncData);
+ return SOCKET_ERROR;
+ }
}
/* Create the Asynch Thread if Needed */