mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 08:25:03 +00:00
[AFD]
- Move the TdiReceiveDatagram call to WarmSocketForBind like it is done for connects svn path=/trunk/; revision=52539
This commit is contained in:
parent
54f9acbf0d
commit
4e5a783a2f
1 changed files with 23 additions and 24 deletions
|
@ -37,14 +37,34 @@ NTSTATUS WarmSocketForBind( PAFD_FCB FCB ) {
|
|||
|
||||
if (FCB->Flags & AFD_ENDPOINT_CONNECTIONLESS)
|
||||
{
|
||||
Status = TdiQueryMaxDatagramLength(FCB->AddressFile.Object,
|
||||
&FCB->Recv.Size);
|
||||
if (NT_SUCCESS(Status))
|
||||
if (!FCB->Recv.Size)
|
||||
{
|
||||
Status = TdiQueryMaxDatagramLength(FCB->AddressFile.Object,
|
||||
&FCB->Recv.Size);
|
||||
}
|
||||
|
||||
if (NT_SUCCESS(Status) && !FCB->Recv.Window)
|
||||
{
|
||||
FCB->Recv.Window = ExAllocatePool(PagedPool, FCB->Recv.Size);
|
||||
if (!FCB->Recv.Window)
|
||||
Status = STATUS_NO_MEMORY;
|
||||
}
|
||||
|
||||
if (NT_SUCCESS(Status))
|
||||
{
|
||||
Status = TdiReceiveDatagram(&FCB->ReceiveIrp.InFlightRequest,
|
||||
FCB->AddressFile.Object,
|
||||
0,
|
||||
FCB->Recv.Window,
|
||||
FCB->Recv.Size,
|
||||
FCB->AddressFrom,
|
||||
&FCB->ReceiveIrp.Iosb,
|
||||
PacketSocketRecvComplete,
|
||||
FCB);
|
||||
|
||||
/* We don't want to wait for this read to complete. */
|
||||
if( Status == STATUS_PENDING ) Status = STATUS_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
AFD_DbgPrint(MID_TRACE,("Returning %x\n", Status));
|
||||
|
@ -78,27 +98,6 @@ AfdBindSocket(PDEVICE_OBJECT DeviceObject, PIRP Irp,
|
|||
Status = WarmSocketForBind( FCB );
|
||||
AFD_DbgPrint(MID_TRACE,("FCB->Flags %x\n", FCB->Flags));
|
||||
|
||||
if( !NT_SUCCESS(Status) )
|
||||
return UnlockAndMaybeComplete(FCB, Status, Irp, 0);
|
||||
|
||||
if( FCB->Flags & AFD_ENDPOINT_CONNECTIONLESS ) {
|
||||
AFD_DbgPrint(MID_TRACE,("Calling TdiReceiveDatagram\n"));
|
||||
|
||||
Status = TdiReceiveDatagram
|
||||
( &FCB->ReceiveIrp.InFlightRequest,
|
||||
FCB->AddressFile.Object,
|
||||
0,
|
||||
FCB->Recv.Window,
|
||||
FCB->Recv.Size,
|
||||
FCB->AddressFrom,
|
||||
&FCB->ReceiveIrp.Iosb,
|
||||
PacketSocketRecvComplete,
|
||||
FCB );
|
||||
|
||||
/* We don't want to wait for this read to complete. */
|
||||
if( Status == STATUS_PENDING ) Status = STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
if (NT_SUCCESS(Status))
|
||||
FCB->State = SOCKET_STATE_BOUND;
|
||||
|
||||
|
|
Loading…
Reference in a new issue