Author: cgutman Date: Wed Aug 20 14:06:43 2008 New Revision: 35486
URL: http://svn.reactos.org/svn/reactos?rev=35486&view=rev Log: - Reapply r35481
Modified: 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/listen.c URL: http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/drivers/netw... ============================================================================== --- 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] Wed Aug 20 14:06:43 2008 @@ -87,14 +87,14 @@ PAFD_FCB FCB = (PAFD_FCB)Context; PAFD_TDI_OBJECT_QELT Qelt;
+ if( Irp->Cancel ) { + if( FCB ) FCB->ListenIrp.InFlightRequest = NULL; + return STATUS_CANCELLED; + } + if( !SocketAcquireStateLock( FCB ) ) return Status;
FCB->ListenIrp.InFlightRequest = NULL; - - if( Irp->Cancel ) { - SocketStateUnlock( FCB ); - return STATUS_SUCCESS; - }
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/netw... ============================================================================== --- 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] Wed Aug 20 14:06:43 2008 @@ -233,6 +233,11 @@
ASSERT_IRQL(APC_LEVEL);
+ if( Irp->Cancel ) { + if( FCB ) FCB->ReceiveIrp.InFlightRequest = NULL; + return STATUS_CANCELLED; + } + if( !SocketAcquireStateLock( FCB ) ) return Status;
FCB->ReceiveIrp.InFlightRequest = NULL; @@ -448,6 +453,11 @@ UINT DGSize = Irp->IoStatus.Information + sizeof( AFD_STORED_DATAGRAM );
AFD_DbgPrint(MID_TRACE,("Called on %x\n", FCB)); + + if( Irp->Cancel ) { + if( FCB ) FCB->ReceiveIrp.InFlightRequest = NULL; + return STATUS_CANCELLED; + }
if( !SocketAcquireStateLock( FCB ) ) return STATUS_FILE_CLOSED;
Modified: branches/aicom-network-fixes/drivers/network/afd/afd/write.c URL: http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/drivers/netw... ============================================================================== --- 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] Wed Aug 20 14:06:43 2008 @@ -40,6 +40,11 @@
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; @@ -170,6 +175,11 @@ 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;