LIST_ENTRY SockHelpersListHead = { NULL, NULL };
ULONG SockAsyncThreadRefCount;
HANDLE SockAsyncHelperAfdHandle;
-HANDLE SockAsyncCompletionPort;
+HANDLE SockAsyncCompletionPort = NULL;
BOOLEAN SockAsyncSelectCalled;
}
LeaveCriticalSection(&SocketListLock);
- HeapFree(GlobalHeap, 0, Socket);
-
/* Close the handle */
NtClose((HANDLE)Handle);
NtClose(SockEvent);
+ HeapFree(GlobalHeap, 0, Socket);
return MsafdReturnWithErrno(Status, lpErrno, 0, NULL);
}
/* Check if the Thread Already Exists */
if (SockAsyncThreadRefCount)
{
+ ASSERT(SockAsyncCompletionPort);
return TRUE;
}
IO_COMPLETION_ALL_ACCESS,
NULL,
2); // Allow 2 threads only
-
+ if (!NT_SUCCESS(Status))
+ {
+ AFD_DbgPrint(MID_TRACE,("Failed to create completion port\n"));
+ return FALSE;
+ }
/* Protect Handle */
HandleFlags.ProtectFromClose = TRUE;
HandleFlags.Inherit = FALSE;
}
else
{
- DbgPrint("%s: Received invalid lpErrno pointer!\n", __FUNCTION__);
+ DbgPrint("%s: Received invalid lpErrno pointer! %s\n", __FUNCTION__);
if (ReturnedBytes)
*ReturnedBytes = (Status == STATUS_SUCCESS) ? Received : 0;