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 );
DestroySocket( FCB );
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;
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;
FCB->ReceiveIrp.InFlightRequest = NULL;
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;
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;