From 605efdf3f294e7faccaef94756240ac2edb8093b Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Mon, 5 Oct 2009 02:31:16 +0000 Subject: [PATCH] - Remove the STATUS_PENDING case in UnlockAndMaybeComplete so we can catch pending IRPs which didn't get queued in the PendingIrpList svn path=/trunk/; revision=43297 --- reactos/drivers/network/afd/afd/lock.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/reactos/drivers/network/afd/afd/lock.c b/reactos/drivers/network/afd/afd/lock.c index 62263aa1fde..bdfc20ef7d7 100644 --- a/reactos/drivers/network/afd/afd/lock.c +++ b/reactos/drivers/network/afd/afd/lock.c @@ -290,22 +290,12 @@ VOID SocketStateUnlock( PAFD_FCB FCB ) { NTSTATUS NTAPI UnlockAndMaybeComplete ( PAFD_FCB FCB, NTSTATUS Status, PIRP Irp, UINT Information ) { - Irp->IoStatus.Status = Status; Irp->IoStatus.Information = Information; - - if( Status == STATUS_PENDING ) { - /* We should firstly mark this IRP as pending, because - otherwise it may be completed by StreamSocketConnectComplete() - before we return from SocketStateUnlock(). */ - IoMarkIrpPending( Irp ); - SocketStateUnlock( FCB ); - } else { - if ( Irp->MdlAddress ) UnlockRequest( Irp, IoGetCurrentIrpStackLocation( Irp ) ); - (void)IoSetCancelRoutine(Irp, NULL); - SocketStateUnlock( FCB ); - IoCompleteRequest( Irp, IO_NETWORK_INCREMENT ); - } + if ( Irp->MdlAddress ) UnlockRequest( Irp, IoGetCurrentIrpStackLocation( Irp ) ); + (void)IoSetCancelRoutine(Irp, NULL); + SocketStateUnlock( FCB ); + IoCompleteRequest( Irp, IO_NETWORK_INCREMENT ); return Status; } @@ -325,5 +315,6 @@ NTSTATUS LeaveIrpUntilLater( PAFD_FCB FCB, PIRP Irp, UINT Function ) { &Irp->Tail.Overlay.ListEntry ); IoMarkIrpPending(Irp); (void)IoSetCancelRoutine(Irp, AfdCancelHandler); - return UnlockAndMaybeComplete( FCB, STATUS_PENDING, Irp, 0 ); + SocketStateUnlock( FCB ); + return STATUS_PENDING; }