- Remove the STATUS_PENDING case in UnlockAndMaybeComplete so we can catch pending...
authorCameron Gutman <aicommander@gmail.com>
Mon, 5 Oct 2009 02:31:16 +0000 (02:31 +0000)
committerCameron Gutman <aicommander@gmail.com>
Mon, 5 Oct 2009 02:31:16 +0000 (02:31 +0000)
svn path=/trunk/; revision=43297

reactos/drivers/network/afd/afd/lock.c

index 62263aa..bdfc20e 100644 (file)
@@ -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;
 }