- Revert r35279 due to some odd problems with UnlockBuffers when completing

svn path=/branches/aicom-network-fixes/; revision=35298
This commit is contained in:
Cameron Gutman 2008-08-13 04:40:39 +00:00
parent e07f679c75
commit 4afbde3127
2 changed files with 18 additions and 18 deletions

View file

@ -573,18 +573,18 @@ AfdPacketSocketReadData(PDEVICE_OBJECT DeviceObject, PIRP Irp,
AFD_DbgPrint(MID_TRACE,("Recv flags %x\n", RecvReq->AfdFlags)); AFD_DbgPrint(MID_TRACE,("Recv flags %x\n", RecvReq->AfdFlags));
if( !IsListEmpty( &FCB->DatagramList ) ) { RecvReq->BufferArray = LockBuffers( RecvReq->BufferArray,
RecvReq->BufferArray = LockBuffers( RecvReq->BufferArray, RecvReq->BufferCount,
RecvReq->BufferCount, RecvReq->Address,
RecvReq->Address, RecvReq->AddressLength,
RecvReq->AddressLength, TRUE, TRUE );
TRUE, TRUE );
if( !RecvReq->BufferArray ) { /* access violation in userspace */ if( !RecvReq->BufferArray ) { /* access violation in userspace */
return UnlockAndMaybeComplete return UnlockAndMaybeComplete
( FCB, STATUS_ACCESS_VIOLATION, Irp, 0, NULL ); ( FCB, STATUS_ACCESS_VIOLATION, Irp, 0, NULL );
} }
if( !IsListEmpty( &FCB->DatagramList ) ) {
ListEntry = RemoveHeadList( &FCB->DatagramList ); ListEntry = RemoveHeadList( &FCB->DatagramList );
DatagramRecv = CONTAINING_RECORD DatagramRecv = CONTAINING_RECORD
( ListEntry, AFD_STORED_DATAGRAM, ListEntry ); ( ListEntry, AFD_STORED_DATAGRAM, ListEntry );

View file

@ -280,6 +280,16 @@ AfdConnectedSocketWriteData(PDEVICE_OBJECT DeviceObject, PIRP Irp,
AFD_DbgPrint(MID_TRACE,("We already have %d bytes waiting.\n", AFD_DbgPrint(MID_TRACE,("We already have %d bytes waiting.\n",
FCB->Send.BytesUsed)); 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", AFD_DbgPrint(MID_TRACE,("FCB->Send.BytesUsed = %d\n",
FCB->Send.BytesUsed)); FCB->Send.BytesUsed));
@ -289,16 +299,6 @@ AfdConnectedSocketWriteData(PDEVICE_OBJECT DeviceObject, PIRP Irp,
AFD_DbgPrint(MID_TRACE,("We can accept %d bytes\n", AFD_DbgPrint(MID_TRACE,("We can accept %d bytes\n",
SpaceAvail)); 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 && for( i = 0; FCB->Send.BytesUsed < FCB->Send.Size &&
i < SendReq->BufferCount; i++ ) { i < SendReq->BufferCount; i++ ) {
CopySize = MIN( SpaceAvail, CopySize = MIN( SpaceAvail,