diff --git a/reactos/drivers/network/afd/afd/listen.c b/reactos/drivers/network/afd/afd/listen.c index c1fc5ff2ceb..026a4df229f 100644 --- a/reactos/drivers/network/afd/afd/listen.c +++ b/reactos/drivers/network/afd/afd/listen.c @@ -327,6 +327,8 @@ NTSTATUS AfdAccept( PDEVICE_OBJECT DeviceObject, PIRP Irp, if( !SocketAcquireStateLock( FCB ) ) return LostSocket( Irp ); + FCB->EventSelectDisabled &= ~AFD_EVENT_ACCEPT; + for( PendingConn = FCB->PendingConnections.Flink; PendingConn != &FCB->PendingConnections; PendingConn = PendingConn->Flink ) { @@ -364,8 +366,6 @@ NTSTATUS AfdAccept( PDEVICE_OBJECT DeviceObject, PIRP Irp, ExFreePool( PendingConnObj ); - FCB->EventSelectDisabled &= ~AFD_EVENT_ACCEPT; - if( !IsListEmpty( &FCB->PendingConnections ) ) { FCB->PollState |= AFD_EVENT_ACCEPT; diff --git a/reactos/drivers/network/afd/afd/read.c b/reactos/drivers/network/afd/afd/read.c index b0966854a50..b956c25cd14 100644 --- a/reactos/drivers/network/afd/afd/read.c +++ b/reactos/drivers/network/afd/afd/read.c @@ -436,6 +436,8 @@ AfdConnectedSocketReadData(PDEVICE_OBJECT DeviceObject, PIRP Irp, if( !SocketAcquireStateLock( FCB ) ) return LostSocket( Irp ); + FCB->EventSelectDisabled &= ~AFD_EVENT_RECEIVE; + if( !(FCB->Flags & AFD_ENDPOINT_CONNECTIONLESS) && FCB->State != SOCKET_STATE_CONNECTED && FCB->State != SOCKET_STATE_CONNECTING ) { @@ -461,8 +463,6 @@ AfdConnectedSocketReadData(PDEVICE_OBJECT DeviceObject, PIRP Irp, Irp, 0 ); } - FCB->EventSelectDisabled &= ~AFD_EVENT_RECEIVE; - if( FCB->Flags & AFD_ENDPOINT_CONNECTIONLESS ) { if (!IsListEmpty(&FCB->DatagramList)) @@ -704,6 +704,8 @@ AfdPacketSocketReadData(PDEVICE_OBJECT DeviceObject, PIRP Irp, if( !SocketAcquireStateLock( FCB ) ) return LostSocket( Irp ); + FCB->EventSelectDisabled &= ~AFD_EVENT_RECEIVE; + /* Check that the socket is bound */ if( FCB->State != SOCKET_STATE_BOUND ) { @@ -732,8 +734,6 @@ AfdPacketSocketReadData(PDEVICE_OBJECT DeviceObject, PIRP Irp, return UnlockAndMaybeComplete(FCB, STATUS_ACCESS_VIOLATION, Irp, 0); } - FCB->EventSelectDisabled &= ~AFD_EVENT_RECEIVE; - if (!IsListEmpty(&FCB->DatagramList)) { ListEntry = RemoveHeadList(&FCB->DatagramList);