- Merge aicom-network-fixes up to r35611

svn path=/trunk/; revision=35614
This commit is contained in:
Cameron Gutman 2008-08-24 20:50:17 +00:00
parent ca33f36d34
commit 3a7a8f1f08
4 changed files with 17 additions and 5 deletions

View file

@ -330,8 +330,10 @@ NTSTATUS AfdAccept( PDEVICE_OBJECT DeviceObject, PIRP Irp,
ExFreePool( PendingConnObj );
if( IsListEmpty( &FCB->PendingConnections ) )
if( IsListEmpty( &FCB->PendingConnections ) ) {
FCB->PollState &= ~AFD_EVENT_ACCEPT;
PollReeval( FCB->DeviceExt, FCB->FileObject );
}
SocketStateUnlock( FCB );
return Irp->IoStatus.Status;

View file

@ -98,6 +98,7 @@ static NTSTATUS TryToSatisfyRecvRequestFromBuffer( PAFD_FCB FCB,
if( FCB->Recv.BytesUsed == FCB->Recv.Content ) {
FCB->Recv.BytesUsed = FCB->Recv.Content = 0;
FCB->PollState &= ~AFD_EVENT_RECEIVE;
PollReeval( FCB->DeviceExt, FCB->FileObject );
if( !FCB->ReceiveIrp.InFlightRequest ) {
AFD_DbgPrint(MID_TRACE,("Replenishing buffer\n"));
@ -480,12 +481,16 @@ PacketSocketRecvComplete(
DatagramRecv->Address =
TaCopyTransportAddress( FCB->AddressFrom->RemoteAddress );
InsertTailList( &FCB->DatagramList, &DatagramRecv->ListEntry );
if( !DatagramRecv->Address ) Status = STATUS_NO_MEMORY;
} else Status = STATUS_NO_MEMORY;
if( !NT_SUCCESS( Status ) ) {
if( DatagramRecv ) ExFreePool( DatagramRecv );
SocketStateUnlock( FCB );
return Status;
} else {
InsertTailList( &FCB->DatagramList, &DatagramRecv->ListEntry );
}
/* Satisfy as many requests as we can */

View file

@ -122,8 +122,10 @@ NTSTATUS TdiBuildNullConnectionInfo
ExAllocatePool(NonPagedPool,
sizeof(TDI_CONNECTION_INFORMATION) +
TdiAddressSize);
if (!ConnInfo)
return STATUS_INSUFFICIENT_RESOURCES;
if (!ConnInfo) {
*ConnectionInfo = NULL;
return STATUS_INSUFFICIENT_RESOURCES;
}
Status = TdiBuildNullConnectionInfoInPlace( ConnInfo, Type );

View file

@ -140,9 +140,10 @@ static NTSTATUS NTAPI SendComplete
SocketCalloutLeave( FCB );
} else {
FCB->PollState |= AFD_EVENT_SEND;
PollReeval( FCB->DeviceExt, FCB->FileObject );
}
PollReeval( FCB->DeviceExt, FCB->FileObject );
if( TotalBytesCopied > 0 ) {
UnlockBuffers( SendReq->BufferArray, SendReq->BufferCount, FALSE );
@ -395,6 +396,8 @@ AfdPacketSocketWriteData(PDEVICE_OBJECT DeviceObject, PIRP Irp,
FCB->EventsFired &= ~AFD_EVENT_SEND;
FCB->PollState &= ~AFD_EVENT_SEND;
PollReeval( FCB->DeviceExt, FCB->FileObject );
/* Check that the socket is bound */
if( FCB->State != SOCKET_STATE_BOUND )
return UnlockAndMaybeComplete