Author: cgutman
Date: Thu Oct 23 21:56:16 2008
New Revision: 36921
URL:
http://svn.reactos.org/svn/reactos?rev=36921&view=rev
Log:
- Move the checks inside of the lock
Modified:
branches/aicom-network-fixes/drivers/network/afd/afd/connect.c
branches/aicom-network-fixes/drivers/network/afd/afd/listen.c
branches/aicom-network-fixes/drivers/network/afd/afd/read.c
branches/aicom-network-fixes/drivers/network/afd/afd/write.c
Modified: branches/aicom-network-fixes/drivers/network/afd/afd/connect.c
URL:
http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/drivers/net…
==============================================================================
--- branches/aicom-network-fixes/drivers/network/afd/afd/connect.c [iso-8859-1] (original)
+++ branches/aicom-network-fixes/drivers/network/afd/afd/connect.c [iso-8859-1] Thu Oct 23
21:56:16 2008
@@ -77,11 +77,6 @@
AFD_DbgPrint(MID_TRACE,("Called: FCB %x, FO %x\n",
Context, FCB->FileObject));
- if( Irp->Cancel ) {
- if( FCB ) FCB->ConnectIrp.InFlightRequest = NULL;
- return STATUS_CANCELLED;
- }
-
/* I was wrong about this before as we can have pending writes to a not
* yet connected socket */
if( !SocketAcquireStateLock( FCB ) ) return STATUS_FILE_CLOSED;
@@ -90,6 +85,11 @@
Irp->IoStatus.Status));
FCB->ConnectIrp.InFlightRequest = NULL;
+
+ if( Irp->Cancel ) {
+ SocketStateUnlock( FCB );
+ return STATUS_CANCELLED;
+ }
if( NT_SUCCESS(Irp->IoStatus.Status) ) {
FCB->PollState |= AFD_EVENT_CONNECT | AFD_EVENT_SEND;
Modified: branches/aicom-network-fixes/drivers/network/afd/afd/listen.c
URL:
http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/drivers/net…
==============================================================================
--- branches/aicom-network-fixes/drivers/network/afd/afd/listen.c [iso-8859-1] (original)
+++ branches/aicom-network-fixes/drivers/network/afd/afd/listen.c [iso-8859-1] Thu Oct 23
21:56:16 2008
@@ -102,14 +102,14 @@
PAFD_FCB FCB = (PAFD_FCB)Context;
PAFD_TDI_OBJECT_QELT Qelt;
+ if( !SocketAcquireStateLock( FCB ) ) return STATUS_FILE_CLOSED;
+
+ FCB->ListenIrp.InFlightRequest = NULL;
+
if( Irp->Cancel ) {
- if( FCB ) FCB->ListenIrp.InFlightRequest = NULL;
+ SocketStateUnlock( FCB );
return STATUS_CANCELLED;
}
-
- if( !SocketAcquireStateLock( FCB ) ) return STATUS_FILE_CLOSED;
-
- FCB->ListenIrp.InFlightRequest = NULL;
if( FCB->State == SOCKET_STATE_CLOSED ) {
SocketStateUnlock( FCB );
Modified: branches/aicom-network-fixes/drivers/network/afd/afd/read.c
URL:
http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/drivers/net…
==============================================================================
--- branches/aicom-network-fixes/drivers/network/afd/afd/read.c [iso-8859-1] (original)
+++ branches/aicom-network-fixes/drivers/network/afd/afd/read.c [iso-8859-1] Thu Oct 23
21:56:16 2008
@@ -234,14 +234,15 @@
ASSERT_IRQL(APC_LEVEL);
+ if( !SocketAcquireStateLock( FCB ) ) return Status;
+
+ FCB->ReceiveIrp.InFlightRequest = NULL;
+
if( Irp->Cancel ) {
- if( FCB ) FCB->ReceiveIrp.InFlightRequest = NULL;
+ SocketStateUnlock( FCB );
return STATUS_CANCELLED;
}
- if( !SocketAcquireStateLock( FCB ) ) return Status;
-
- FCB->ReceiveIrp.InFlightRequest = NULL;
FCB->Recv.Content = Irp->IoStatus.Information;
FCB->Recv.BytesUsed = 0;
@@ -455,14 +456,14 @@
AFD_DbgPrint(MID_TRACE,("Called on %x\n", FCB));
+ if( !SocketAcquireStateLock( FCB ) ) return STATUS_FILE_CLOSED;
+
+ FCB->ReceiveIrp.InFlightRequest = NULL;
+
if( Irp->Cancel ) {
- if( FCB ) FCB->ReceiveIrp.InFlightRequest = NULL;
+ SocketStateUnlock( FCB );
return STATUS_CANCELLED;
}
-
- if( !SocketAcquireStateLock( FCB ) ) return STATUS_FILE_CLOSED;
-
- FCB->ReceiveIrp.InFlightRequest = NULL;
if( FCB->State == SOCKET_STATE_CLOSED ) {
SocketStateUnlock( FCB );
Modified: branches/aicom-network-fixes/drivers/network/afd/afd/write.c
URL:
http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/drivers/net…
==============================================================================
--- branches/aicom-network-fixes/drivers/network/afd/afd/write.c [iso-8859-1] (original)
+++ branches/aicom-network-fixes/drivers/network/afd/afd/write.c [iso-8859-1] Thu Oct 23
21:56:16 2008
@@ -40,15 +40,15 @@
ASSERT_IRQL(APC_LEVEL);
- if( Irp->Cancel ) {
- if( FCB ) FCB->SendIrp.InFlightRequest = NULL;
- return STATUS_CANCELLED;
- }
-
if( !SocketAcquireStateLock( FCB ) ) return Status;
FCB->SendIrp.InFlightRequest = NULL;
/* Request is not in flight any longer */
+
+ if( Irp->Cancel ) {
+ SocketStateUnlock( FCB );
+ return STATUS_CANCELLED;
+ }
if( FCB->State == SOCKET_STATE_CLOSED ) {
SocketStateUnlock( FCB );
@@ -176,19 +176,19 @@
Irp->IoStatus.Status,
Irp->IoStatus.Information));
- if( Irp->Cancel ) {
- if( FCB ) FCB->SendIrp.InFlightRequest = NULL;
- return STATUS_CANCELLED;
- }
-
/* It's ok if the FCB already died */
if( !SocketAcquireStateLock( FCB ) ) return STATUS_SUCCESS;
+ FCB->SendIrp.InFlightRequest = NULL;
+ /* Request is not in flight any longer */
+
+ if( Irp->Cancel ) {
+ SocketStateUnlock( FCB );
+ return STATUS_CANCELLED;
+ }
+
FCB->PollState |= AFD_EVENT_SEND;
PollReeval( FCB->DeviceExt, FCB->FileObject );
-
- FCB->SendIrp.InFlightRequest = NULL;
- /* Request is not in flight any longer */
if( FCB->State == SOCKET_STATE_CLOSED ) {
SocketStateUnlock( FCB );