Author: cgutman Date: Tue Aug 12 23:40:39 2008 New Revision: 35298
URL: http://svn.reactos.org/svn/reactos?rev=35298&view=rev Log: - Revert r35279 due to some odd problems with UnlockBuffers when completing
Modified: branches/aicom-network-fixes/drivers/network/afd/afd/read.c branches/aicom-network-fixes/drivers/network/afd/afd/write.c
Modified: branches/aicom-network-fixes/drivers/network/afd/afd/read.c URL: http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/drivers/netw... ============================================================================== --- branches/aicom-network-fixes/drivers/network/afd/afd/read.c [iso-8859-1] (original) +++ branches/aicom-network-fixes/drivers/network/afd/afd/read.c [iso-8859-1] Tue Aug 12 23:40:39 2008 @@ -573,18 +573,18 @@
AFD_DbgPrint(MID_TRACE,("Recv flags %x\n", RecvReq->AfdFlags));
- if( !IsListEmpty( &FCB->DatagramList ) ) { - RecvReq->BufferArray = LockBuffers( RecvReq->BufferArray, - RecvReq->BufferCount, - RecvReq->Address, - RecvReq->AddressLength, - TRUE, TRUE ); - - if( !RecvReq->BufferArray ) { /* access violation in userspace */ + RecvReq->BufferArray = LockBuffers( RecvReq->BufferArray, + RecvReq->BufferCount, + RecvReq->Address, + RecvReq->AddressLength, + TRUE, TRUE ); + + if( !RecvReq->BufferArray ) { /* access violation in userspace */ return UnlockAndMaybeComplete ( FCB, STATUS_ACCESS_VIOLATION, Irp, 0, NULL ); - } - + } + + if( !IsListEmpty( &FCB->DatagramList ) ) { ListEntry = RemoveHeadList( &FCB->DatagramList ); DatagramRecv = CONTAINING_RECORD ( ListEntry, AFD_STORED_DATAGRAM, ListEntry );
Modified: branches/aicom-network-fixes/drivers/network/afd/afd/write.c URL: http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/drivers/netw... ============================================================================== --- branches/aicom-network-fixes/drivers/network/afd/afd/write.c [iso-8859-1] (original) +++ branches/aicom-network-fixes/drivers/network/afd/afd/write.c [iso-8859-1] Tue Aug 12 23:40:39 2008 @@ -280,6 +280,16 @@ AFD_DbgPrint(MID_TRACE,("We already have %d bytes waiting.\n", FCB->Send.BytesUsed));
+ SendReq->BufferArray = LockBuffers( SendReq->BufferArray, + SendReq->BufferCount, + NULL, NULL, + FALSE, FALSE ); + + if( !SendReq->BufferArray ) { + return UnlockAndMaybeComplete( FCB, STATUS_ACCESS_VIOLATION, + Irp, 0, NULL ); + } + AFD_DbgPrint(MID_TRACE,("FCB->Send.BytesUsed = %d\n", FCB->Send.BytesUsed));
@@ -288,16 +298,6 @@
AFD_DbgPrint(MID_TRACE,("We can accept %d bytes\n", SpaceAvail)); - - SendReq->BufferArray = LockBuffers( SendReq->BufferArray, - SendReq->BufferCount, - NULL, NULL, - FALSE, FALSE ); - - if( !SendReq->BufferArray ) { - return UnlockAndMaybeComplete( FCB, STATUS_ACCESS_VIOLATION, - Irp, 0, NULL ); - }
for( i = 0; FCB->Send.BytesUsed < FCB->Send.Size && i < SendReq->BufferCount; i++ ) {