mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 19:26:32 +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:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user