mirror of
https://github.com/reactos/reactos.git
synced 2025-08-04 16:26:02 +00:00
Set nonblocking on all sockets initially.
Zero flags and other junk in the ea buffer when creating a new socket. More correct error return function (check both Errno and ReturnedBytes ptrs). svn path=/trunk/; revision=13738
This commit is contained in:
parent
9127a1ca9d
commit
333c14350e
1 changed files with 23 additions and 15 deletions
|
@ -16,8 +16,8 @@
|
||||||
#include <rosrtl/string.h>
|
#include <rosrtl/string.h>
|
||||||
|
|
||||||
#ifdef DBG
|
#ifdef DBG
|
||||||
DWORD DebugTraceLevel = DEBUG_ULTRA;
|
//DWORD DebugTraceLevel = DEBUG_ULTRA;
|
||||||
//DWORD DebugTraceLevel = 0;
|
DWORD DebugTraceLevel = 0;
|
||||||
#endif /* DBG */
|
#endif /* DBG */
|
||||||
|
|
||||||
HANDLE GlobalHeap;
|
HANDLE GlobalHeap;
|
||||||
|
@ -120,6 +120,7 @@ WSPSocket(
|
||||||
Socket->SharedData.GroupID = g;
|
Socket->SharedData.GroupID = g;
|
||||||
Socket->SharedData.GroupType = 0;
|
Socket->SharedData.GroupType = 0;
|
||||||
Socket->SharedData.UseSAN = FALSE;
|
Socket->SharedData.UseSAN = FALSE;
|
||||||
|
Socket->SharedData.NonBlocking = FALSE; /* Sockets start blocking */
|
||||||
Socket->SanData = NULL;
|
Socket->SanData = NULL;
|
||||||
|
|
||||||
/* Ask alex about this */
|
/* Ask alex about this */
|
||||||
|
@ -137,6 +138,7 @@ WSPSocket(
|
||||||
|
|
||||||
/* Set up EA Buffer */
|
/* Set up EA Buffer */
|
||||||
EABuffer = HeapAlloc(GlobalHeap, 0, SizeOfEA);
|
EABuffer = HeapAlloc(GlobalHeap, 0, SizeOfEA);
|
||||||
|
RtlZeroMemory(EABuffer, SizeOfEA);
|
||||||
EABuffer->NextEntryOffset = 0;
|
EABuffer->NextEntryOffset = 0;
|
||||||
EABuffer->Flags = 0;
|
EABuffer->Flags = 0;
|
||||||
EABuffer->EaNameLength = AFD_PACKET_COMMAND_LENGTH;
|
EABuffer->EaNameLength = AFD_PACKET_COMMAND_LENGTH;
|
||||||
|
@ -265,6 +267,8 @@ error:
|
||||||
|
|
||||||
DWORD MsafdReturnWithErrno( NTSTATUS Status, LPINT Errno, DWORD Received,
|
DWORD MsafdReturnWithErrno( NTSTATUS Status, LPINT Errno, DWORD Received,
|
||||||
LPDWORD ReturnedBytes ) {
|
LPDWORD ReturnedBytes ) {
|
||||||
|
if( ReturnedBytes ) *ReturnedBytes = 0;
|
||||||
|
if( Errno ) {
|
||||||
switch (Status) {
|
switch (Status) {
|
||||||
case STATUS_CANT_WAIT: *Errno = WSAEWOULDBLOCK; break;
|
case STATUS_CANT_WAIT: *Errno = WSAEWOULDBLOCK; break;
|
||||||
case STATUS_TIMEOUT:
|
case STATUS_TIMEOUT:
|
||||||
|
@ -279,6 +283,7 @@ DWORD MsafdReturnWithErrno( NTSTATUS Status, LPINT Errno, DWORD Received,
|
||||||
*Errno = WSAEINVAL; break;
|
*Errno = WSAEINVAL; break;
|
||||||
} break;
|
} break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Success */
|
/* Success */
|
||||||
return Status == STATUS_SUCCESS ? 0 : SOCKET_ERROR;
|
return Status == STATUS_SUCCESS ? 0 : SOCKET_ERROR;
|
||||||
|
@ -588,6 +593,9 @@ WSPSelect(
|
||||||
PollBufferSize = sizeof(*PollInfo) +
|
PollBufferSize = sizeof(*PollInfo) +
|
||||||
(HandleCount * sizeof(AFD_HANDLE));
|
(HandleCount * sizeof(AFD_HANDLE));
|
||||||
|
|
||||||
|
AFD_DbgPrint(MID_TRACE,("HandleCount: %d BufferSize: %d\n",
|
||||||
|
HandleCount, PollBufferSize));
|
||||||
|
|
||||||
/* Allocate */
|
/* Allocate */
|
||||||
PollBuffer = HeapAlloc(GlobalHeap, 0, PollBufferSize);
|
PollBuffer = HeapAlloc(GlobalHeap, 0, PollBufferSize);
|
||||||
PollInfo = (PAFD_POLL_INFO)PollBuffer;
|
PollInfo = (PAFD_POLL_INFO)PollBuffer;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue