diff --git a/reactos/drivers/network/afd/afd/connect.c b/reactos/drivers/network/afd/afd/connect.c index 567fca91bc8..3f47a05941a 100644 --- a/reactos/drivers/network/afd/afd/connect.c +++ b/reactos/drivers/network/afd/afd/connect.c @@ -380,7 +380,18 @@ AfdStreamSocketConnect(PDEVICE_OBJECT DeviceObject, PIRP Irp, #endif if( FCB->Flags & AFD_ENDPOINT_CONNECTIONLESS ) - return UnlockAndMaybeComplete( FCB, STATUS_INVALID_PARAMETER, Irp, 0 ); + { + if( FCB->RemoteAddress ) ExFreePool( FCB->RemoteAddress ); + FCB->RemoteAddress = + TaCopyTransportAddress( &ConnectReq->RemoteAddress ); + + if( !FCB->RemoteAddress ) + Status = STATUS_NO_MEMORY; + else + Status = STATUS_SUCCESS; + + return UnlockAndMaybeComplete( FCB, Status, Irp, 0 ); + } switch( FCB->State ) { case SOCKET_STATE_CONNECTED: diff --git a/reactos/drivers/network/afd/afd/write.c b/reactos/drivers/network/afd/afd/write.c index a23036161de..aa1c9e371a5 100644 --- a/reactos/drivers/network/afd/afd/write.c +++ b/reactos/drivers/network/afd/afd/write.c @@ -229,7 +229,7 @@ AfdConnectedSocketWriteData(PDEVICE_OBJECT DeviceObject, PIRP Irp, PTDI_CONNECTION_INFORMATION TargetAddress; /* Check that the socket is bound */ - if( FCB->State != SOCKET_STATE_BOUND ) + if( FCB->State != SOCKET_STATE_BOUND || !FCB->RemoteAddress ) return UnlockAndMaybeComplete( FCB, STATUS_INVALID_PARAMETER, Irp, 0 );