mirror of
https://github.com/reactos/reactos.git
synced 2025-08-02 20:36:26 +00:00
- Merge aicom-network-fixes up to r35611
svn path=/trunk/; revision=35614
This commit is contained in:
parent
ca33f36d34
commit
3a7a8f1f08
4 changed files with 17 additions and 5 deletions
|
@ -330,8 +330,10 @@ NTSTATUS AfdAccept( PDEVICE_OBJECT DeviceObject, PIRP Irp,
|
||||||
|
|
||||||
ExFreePool( PendingConnObj );
|
ExFreePool( PendingConnObj );
|
||||||
|
|
||||||
if( IsListEmpty( &FCB->PendingConnections ) )
|
if( IsListEmpty( &FCB->PendingConnections ) ) {
|
||||||
FCB->PollState &= ~AFD_EVENT_ACCEPT;
|
FCB->PollState &= ~AFD_EVENT_ACCEPT;
|
||||||
|
PollReeval( FCB->DeviceExt, FCB->FileObject );
|
||||||
|
}
|
||||||
|
|
||||||
SocketStateUnlock( FCB );
|
SocketStateUnlock( FCB );
|
||||||
return Irp->IoStatus.Status;
|
return Irp->IoStatus.Status;
|
||||||
|
|
|
@ -98,6 +98,7 @@ static NTSTATUS TryToSatisfyRecvRequestFromBuffer( PAFD_FCB FCB,
|
||||||
if( FCB->Recv.BytesUsed == FCB->Recv.Content ) {
|
if( FCB->Recv.BytesUsed == FCB->Recv.Content ) {
|
||||||
FCB->Recv.BytesUsed = FCB->Recv.Content = 0;
|
FCB->Recv.BytesUsed = FCB->Recv.Content = 0;
|
||||||
FCB->PollState &= ~AFD_EVENT_RECEIVE;
|
FCB->PollState &= ~AFD_EVENT_RECEIVE;
|
||||||
|
PollReeval( FCB->DeviceExt, FCB->FileObject );
|
||||||
|
|
||||||
if( !FCB->ReceiveIrp.InFlightRequest ) {
|
if( !FCB->ReceiveIrp.InFlightRequest ) {
|
||||||
AFD_DbgPrint(MID_TRACE,("Replenishing buffer\n"));
|
AFD_DbgPrint(MID_TRACE,("Replenishing buffer\n"));
|
||||||
|
@ -480,12 +481,16 @@ PacketSocketRecvComplete(
|
||||||
DatagramRecv->Address =
|
DatagramRecv->Address =
|
||||||
TaCopyTransportAddress( FCB->AddressFrom->RemoteAddress );
|
TaCopyTransportAddress( FCB->AddressFrom->RemoteAddress );
|
||||||
|
|
||||||
InsertTailList( &FCB->DatagramList, &DatagramRecv->ListEntry );
|
if( !DatagramRecv->Address ) Status = STATUS_NO_MEMORY;
|
||||||
|
|
||||||
} else Status = STATUS_NO_MEMORY;
|
} else Status = STATUS_NO_MEMORY;
|
||||||
|
|
||||||
if( !NT_SUCCESS( Status ) ) {
|
if( !NT_SUCCESS( Status ) ) {
|
||||||
|
if( DatagramRecv ) ExFreePool( DatagramRecv );
|
||||||
SocketStateUnlock( FCB );
|
SocketStateUnlock( FCB );
|
||||||
return Status;
|
return Status;
|
||||||
|
} else {
|
||||||
|
InsertTailList( &FCB->DatagramList, &DatagramRecv->ListEntry );
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Satisfy as many requests as we can */
|
/* Satisfy as many requests as we can */
|
||||||
|
|
|
@ -122,8 +122,10 @@ NTSTATUS TdiBuildNullConnectionInfo
|
||||||
ExAllocatePool(NonPagedPool,
|
ExAllocatePool(NonPagedPool,
|
||||||
sizeof(TDI_CONNECTION_INFORMATION) +
|
sizeof(TDI_CONNECTION_INFORMATION) +
|
||||||
TdiAddressSize);
|
TdiAddressSize);
|
||||||
if (!ConnInfo)
|
if (!ConnInfo) {
|
||||||
return STATUS_INSUFFICIENT_RESOURCES;
|
*ConnectionInfo = NULL;
|
||||||
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
}
|
||||||
|
|
||||||
Status = TdiBuildNullConnectionInfoInPlace( ConnInfo, Type );
|
Status = TdiBuildNullConnectionInfoInPlace( ConnInfo, Type );
|
||||||
|
|
||||||
|
|
|
@ -140,9 +140,10 @@ static NTSTATUS NTAPI SendComplete
|
||||||
SocketCalloutLeave( FCB );
|
SocketCalloutLeave( FCB );
|
||||||
} else {
|
} else {
|
||||||
FCB->PollState |= AFD_EVENT_SEND;
|
FCB->PollState |= AFD_EVENT_SEND;
|
||||||
PollReeval( FCB->DeviceExt, FCB->FileObject );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PollReeval( FCB->DeviceExt, FCB->FileObject );
|
||||||
|
|
||||||
if( TotalBytesCopied > 0 ) {
|
if( TotalBytesCopied > 0 ) {
|
||||||
UnlockBuffers( SendReq->BufferArray, SendReq->BufferCount, FALSE );
|
UnlockBuffers( SendReq->BufferArray, SendReq->BufferCount, FALSE );
|
||||||
|
|
||||||
|
@ -395,6 +396,8 @@ AfdPacketSocketWriteData(PDEVICE_OBJECT DeviceObject, PIRP Irp,
|
||||||
FCB->EventsFired &= ~AFD_EVENT_SEND;
|
FCB->EventsFired &= ~AFD_EVENT_SEND;
|
||||||
FCB->PollState &= ~AFD_EVENT_SEND;
|
FCB->PollState &= ~AFD_EVENT_SEND;
|
||||||
|
|
||||||
|
PollReeval( FCB->DeviceExt, FCB->FileObject );
|
||||||
|
|
||||||
/* Check that the socket is bound */
|
/* Check that the socket is bound */
|
||||||
if( FCB->State != SOCKET_STATE_BOUND )
|
if( FCB->State != SOCKET_STATE_BOUND )
|
||||||
return UnlockAndMaybeComplete
|
return UnlockAndMaybeComplete
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue