diff --git a/drivers/network/afd/afd/main.c b/drivers/network/afd/afd/main.c index db017035341..5466aa9036a 100644 --- a/drivers/network/afd/afd/main.c +++ b/drivers/network/afd/afd/main.c @@ -751,9 +751,6 @@ AfdDisconnect(PDEVICE_OBJECT DeviceObject, PIRP Irp, FCB->Recv.Content = 0; FCB->Recv.BytesUsed = 0; - /* Mark us as overread to complete future reads with an error */ - FCB->Overread = TRUE; - /* Set a successful receive status to indicate a shutdown on overread */ FCB->LastReceiveStatus = STATUS_SUCCESS; diff --git a/drivers/network/afd/afd/read.c b/drivers/network/afd/afd/read.c index eb9b3019325..bcc8e37f43c 100644 --- a/drivers/network/afd/afd/read.c +++ b/drivers/network/afd/afd/read.c @@ -175,23 +175,16 @@ static NTSTATUS ReceiveActivity( PAFD_FCB FCB, PIRP Irp ) { TotalBytesCopied)); UnlockBuffers( RecvReq->BufferArray, RecvReq->BufferCount, FALSE ); - if (FCB->Overread && FCB->LastReceiveStatus == STATUS_SUCCESS) - { - /* Overread after a graceful disconnect so complete with an error */ - Status = STATUS_FILE_CLOSED; - } - else - { - /* Unexpected disconnect by the remote host or initial read after a graceful disconnect */ - Status = FCB->LastReceiveStatus; - } + + /* Unexpected disconnect by the remote host or graceful disconnect */ + Status = FCB->LastReceiveStatus; + NextIrp->IoStatus.Status = Status; NextIrp->IoStatus.Information = 0; if( NextIrp == Irp ) RetStatus = Status; if( NextIrp->MdlAddress ) UnlockRequest( NextIrp, IoGetCurrentIrpStackLocation( NextIrp ) ); (void)IoSetCancelRoutine(NextIrp, NULL); IoCompleteRequest( NextIrp, IO_NETWORK_INCREMENT ); - FCB->Overread = TRUE; } } else { /* Kick the user that receive would be possible now */ diff --git a/drivers/network/afd/include/afd.h b/drivers/network/afd/include/afd.h index 21aaac5f426..2ddfcf4ad2d 100644 --- a/drivers/network/afd/include/afd.h +++ b/drivers/network/afd/include/afd.h @@ -159,7 +159,7 @@ typedef struct _AFD_STORED_DATAGRAM { } AFD_STORED_DATAGRAM, *PAFD_STORED_DATAGRAM; typedef struct _AFD_FCB { - BOOLEAN Locked, Critical, Overread, NonBlocking, OobInline, TdiReceiveClosed, SendClosed; + BOOLEAN Locked, Critical, NonBlocking, OobInline, TdiReceiveClosed, SendClosed; UINT State, Flags, GroupID, GroupType; KIRQL OldIrql; UINT LockCount;