Calling listen more than once is expected to be benign.

svn path=/trunk/; revision=39447
This commit is contained in:
Art Yerkes
2009-02-07 01:20:25 +00:00
parent 553d712e8b
commit e44126ac85
+7 -3
View File
@@ -101,6 +101,7 @@ WSPSocket(int AddressFamily,
RtlZeroMemory(Socket, sizeof(*Socket));
Socket->RefCount = 2;
Socket->Handle = -1;
Socket->SharedData.Listening = FALSE;
Socket->SharedData.State = SocketOpen;
Socket->SharedData.AddressFamily = AddressFamily;
Socket->SharedData.SocketType = SocketType;
@@ -615,6 +616,12 @@ WSPListen(SOCKET Handle,
HANDLE SockEvent;
NTSTATUS Status;
/* Get the Socket Structure associate to this Socket*/
Socket = GetSocketStructure(Handle);
if (Socket->SharedData.Listening)
return 0;
Status = NtCreateEvent(&SockEvent,
GENERIC_READ | GENERIC_WRITE,
NULL,
@@ -624,9 +631,6 @@ WSPListen(SOCKET Handle,
if( !NT_SUCCESS(Status) )
return -1;
/* Get the Socket Structure associate to this Socket*/
Socket = GetSocketStructure(Handle);
/* Set Up Listen Structure */
ListenData.UseSAN = FALSE;
ListenData.UseDelayedAcceptance = Socket->SharedData.UseDelayedAcceptance;