[ros-diffs] [cgutman] 40168: - Don't forget to store the status in the IRP - Fix some return statuses
cgutman at svn.reactos.org
cgutman at svn.reactos.org
Sat Mar 21 23:54:09 CET 2009
Author: cgutman
Date: Sun Mar 22 01:54:08 2009
New Revision: 40168
URL: http://svn.reactos.org/svn/reactos?rev=40168&view=rev
Log:
- Don't forget to store the status in the IRP
- Fix some return statuses
Modified:
trunk/reactos/drivers/network/afd/afd/listen.c
trunk/reactos/drivers/network/afd/afd/read.c
trunk/reactos/drivers/network/afd/afd/write.c
Modified: trunk/reactos/drivers/network/afd/afd/listen.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/afd/afd/listen.c?rev=40168&r1=40167&r2=40168&view=diff
==============================================================================
--- trunk/reactos/drivers/network/afd/afd/listen.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/network/afd/afd/listen.c [iso-8859-1] Sun Mar 22 01:54:08 2009
@@ -104,19 +104,27 @@
PAFD_FCB FCB = (PAFD_FCB)Context;
PAFD_TDI_OBJECT_QELT Qelt;
- if( !SocketAcquireStateLock( FCB ) ) return STATUS_FILE_CLOSED;
+ if( !SocketAcquireStateLock( FCB ) ) {
+ Irp->IoStatus.Status = STATUS_FILE_CLOSED;
+ Irp->IoStatus.Information = 0;
+ return STATUS_FILE_CLOSED;
+ }
FCB->ListenIrp.InFlightRequest = NULL;
if( Irp->Cancel ) {
+ Irp->IoStatus.Status = STATUS_CANCELLED;
+ Irp->IoStatus.Information = 0;
SocketStateUnlock( FCB );
return STATUS_CANCELLED;
}
if( FCB->State == SOCKET_STATE_CLOSED ) {
+ Irp->IoStatus.Status = STATUS_FILE_CLOSED;
+ Irp->IoStatus.Information = 0;
SocketStateUnlock( FCB );
DestroySocket( FCB );
- return STATUS_SUCCESS;
+ return STATUS_FILE_CLOSED;
}
AFD_DbgPrint(MID_TRACE,("Completing listen request.\n"));
Modified: trunk/reactos/drivers/network/afd/afd/read.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/afd/afd/read.c?rev=40168&r1=40167&r2=40168&view=diff
==============================================================================
--- trunk/reactos/drivers/network/afd/afd/read.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/network/afd/afd/read.c [iso-8859-1] Sun Mar 22 01:54:08 2009
@@ -235,11 +235,17 @@
ASSERT_IRQL(APC_LEVEL);
- if( !SocketAcquireStateLock( FCB ) ) return Status;
+ if( !SocketAcquireStateLock( FCB ) ) {
+ Irp->IoStatus.Status = STATUS_FILE_CLOSED;
+ Irp->IoStatus.Information = 0;
+ return STATUS_FILE_CLOSED;
+ }
FCB->ReceiveIrp.InFlightRequest = NULL;
if( Irp->Cancel ) {
+ Irp->IoStatus.Status = STATUS_CANCELLED;
+ Irp->IoStatus.Information = 0;
SocketStateUnlock( FCB );
return STATUS_CANCELLED;
}
@@ -249,11 +255,15 @@
if( FCB->State == SOCKET_STATE_CLOSED ) {
AFD_DbgPrint(MIN_TRACE,("!!! CLOSED SOCK GOT A RECEIVE COMPLETE !!!\n"));
+ Irp->IoStatus.Status = STATUS_FILE_CLOSED;
+ Irp->IoStatus.Information = 0;
SocketStateUnlock( FCB );
DestroySocket( FCB );
- return STATUS_SUCCESS;
+ return STATUS_FILE_CLOSED;
} else if( FCB->State == SOCKET_STATE_LISTENING ) {
AFD_DbgPrint(MIN_TRACE,("!!! LISTENER GOT A RECEIVE COMPLETE !!!\n"));
+ Irp->IoStatus.Status = STATUS_INVALID_PARAMETER;
+ Irp->IoStatus.Information = 0;
SocketStateUnlock( FCB );
return STATUS_INVALID_PARAMETER;
}
@@ -457,19 +467,27 @@
AFD_DbgPrint(MID_TRACE,("Called on %x\n", FCB));
- if( !SocketAcquireStateLock( FCB ) ) return STATUS_FILE_CLOSED;
+ if( !SocketAcquireStateLock( FCB ) ) {
+ Irp->IoStatus.Status = STATUS_FILE_CLOSED;
+ Irp->IoStatus.Information = 0;
+ return STATUS_FILE_CLOSED;
+ }
FCB->ReceiveIrp.InFlightRequest = NULL;
if( Irp->Cancel ) {
+ Irp->IoStatus.Status = STATUS_CANCELLED;
+ Irp->IoStatus.Information = 0;
SocketStateUnlock( FCB );
return STATUS_CANCELLED;
}
if( FCB->State == SOCKET_STATE_CLOSED ) {
+ Irp->IoStatus.Status = STATUS_FILE_CLOSED;
+ Irp->IoStatus.Information = 0;
SocketStateUnlock( FCB );
DestroySocket( FCB );
- return STATUS_SUCCESS;
+ return STATUS_FILE_CLOSED;
}
DatagramRecv = ExAllocatePool( NonPagedPool, DGSize );
@@ -488,6 +506,8 @@
} else Status = STATUS_NO_MEMORY;
if( !NT_SUCCESS( Status ) ) {
+ Irp->IoStatus.Status = Status;
+ Irp->IoStatus.Information = 0;
if( DatagramRecv ) ExFreePool( DatagramRecv );
SocketStateUnlock( FCB );
return Status;
Modified: trunk/reactos/drivers/network/afd/afd/write.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/afd/afd/write.c?rev=40168&r1=40167&r2=40168&view=diff
==============================================================================
--- trunk/reactos/drivers/network/afd/afd/write.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/network/afd/afd/write.c [iso-8859-1] Sun Mar 22 01:54:08 2009
@@ -40,20 +40,28 @@
ASSERT_IRQL(APC_LEVEL);
- if( !SocketAcquireStateLock( FCB ) ) return Status;
+ if( !SocketAcquireStateLock( FCB ) ) {
+ Irp->IoStatus.Status = STATUS_FILE_CLOSED;
+ Irp->IoStatus.Information = 0;
+ return STATUS_FILE_CLOSED;
+ }
FCB->SendIrp.InFlightRequest = NULL;
/* Request is not in flight any longer */
if( Irp->Cancel ) {
+ Irp->IoStatus.Status = STATUS_CANCELLED;
+ Irp->IoStatus.Information = 0;
SocketStateUnlock( FCB );
return STATUS_CANCELLED;
}
if( FCB->State == SOCKET_STATE_CLOSED ) {
+ Irp->IoStatus.Status = STATUS_FILE_CLOSED;
+ Irp->IoStatus.Information = 0;
SocketStateUnlock( FCB );
DestroySocket( FCB );
- return STATUS_SUCCESS;
+ return STATUS_FILE_CLOSED;
}
if( !NT_SUCCESS(Status) ) {
@@ -176,13 +184,18 @@
Irp->IoStatus.Status,
Irp->IoStatus.Information));
- /* It's ok if the FCB already died */
- if( !SocketAcquireStateLock( FCB ) ) return STATUS_SUCCESS;
+ if( !SocketAcquireStateLock( FCB ) ) {
+ Irp->IoStatus.Status = STATUS_FILE_CLOSED;
+ Irp->IoStatus.Information = 0;
+ return STATUS_FILE_CLOSED;
+ }
FCB->SendIrp.InFlightRequest = NULL;
/* Request is not in flight any longer */
if( Irp->Cancel ) {
+ Irp->IoStatus.Status = STATUS_CANCELLED;
+ Irp->IoStatus.Information = 0;
SocketStateUnlock( FCB );
return STATUS_CANCELLED;
}
@@ -191,9 +204,11 @@
PollReeval( FCB->DeviceExt, FCB->FileObject );
if( FCB->State == SOCKET_STATE_CLOSED ) {
+ Irp->IoStatus.Status = STATUS_FILE_CLOSED;
+ Irp->IoStatus.Information = 0;
SocketStateUnlock( FCB );
DestroySocket( FCB );
- return STATUS_SUCCESS;
+ return STATUS_FILE_CLOSED;
}
SocketStateUnlock( FCB );
More information about the Ros-diffs
mailing list