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; }