From d0f1fadb7b402726cdc7b1765c8d03281dd09cc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Mon, 24 Sep 2007 08:39:23 +0000 Subject: [PATCH] Never call TdiCloseDevice when warming up a socket svn path=/trunk/; revision=29174 --- reactos/drivers/network/afd/afd/bind.c | 29 ++++++++++------------- reactos/drivers/network/afd/afd/connect.c | 22 ++++++----------- 2 files changed, 19 insertions(+), 32 deletions(-) diff --git a/reactos/drivers/network/afd/afd/bind.c b/reactos/drivers/network/afd/afd/bind.c index e215f9561cc..d11c2a9fa27 100644 --- a/reactos/drivers/network/afd/afd/bind.c +++ b/reactos/drivers/network/afd/afd/bind.c @@ -14,29 +14,24 @@ #include "debug.h" NTSTATUS WarmSocketForBind( PAFD_FCB FCB ) { - NTSTATUS Status = STATUS_UNSUCCESSFUL; + NTSTATUS Status; AFD_DbgPrint(MID_TRACE,("Called (AF %d)\n", - FCB->LocalAddress->Address[0].AddressType)); + FCB->LocalAddress->Address[0].AddressType)); if( !FCB->TdiDeviceName.Length || !FCB->TdiDeviceName.Buffer ) { - AFD_DbgPrint(MID_TRACE,("Null Device\n")); - return STATUS_NO_SUCH_DEVICE; + AFD_DbgPrint(MID_TRACE,("Null Device\n")); + return STATUS_NO_SUCH_DEVICE; + } + if( !FCB->LocalAddress ) { + AFD_DbgPrint(MID_TRACE,("No local address\n")); + return STATUS_UNSUCCESSFUL; } - if( FCB->LocalAddress ) { - Status = TdiOpenAddressFile - ( &FCB->TdiDeviceName, - FCB->LocalAddress, - &FCB->AddressFile.Handle, - &FCB->AddressFile.Object ); - } - - if( !NT_SUCCESS(Status) ) { - TdiCloseDevice( &FCB->AddressFile.Handle, - FCB->AddressFile.Object ); - RtlZeroMemory( &FCB->AddressFile, sizeof( FCB->AddressFile ) ); - } + Status = TdiOpenAddressFile(&FCB->TdiDeviceName, + FCB->LocalAddress, + &FCB->AddressFile.Handle, + &FCB->AddressFile.Object ); AFD_DbgPrint(MID_TRACE,("Returning %x\n", Status)); diff --git a/reactos/drivers/network/afd/afd/connect.c b/reactos/drivers/network/afd/afd/connect.c index 6f82611623e..32befab64f6 100644 --- a/reactos/drivers/network/afd/afd/connect.c +++ b/reactos/drivers/network/afd/afd/connect.c @@ -16,25 +16,17 @@ NTSTATUS WarmSocketForConnection( PAFD_FCB FCB ) { NTSTATUS Status; if( !FCB->TdiDeviceName.Length || !FCB->TdiDeviceName.Buffer ) { - AFD_DbgPrint(MID_TRACE,("Null Device\n")); - return STATUS_NO_SUCH_DEVICE; + AFD_DbgPrint(MID_TRACE,("Null Device\n")); + return STATUS_NO_SUCH_DEVICE; } - Status = TdiOpenConnectionEndpointFile - ( &FCB->TdiDeviceName, - &FCB->Connection.Handle, - &FCB->Connection.Object ); + Status = TdiOpenConnectionEndpointFile(&FCB->TdiDeviceName, + &FCB->Connection.Handle, + &FCB->Connection.Object ); if( NT_SUCCESS(Status) ) { - Status = TdiAssociateAddressFile - ( FCB->AddressFile.Handle, - FCB->Connection.Object ); - } - - if( !NT_SUCCESS(Status) ) { - TdiCloseDevice( &FCB->Connection.Handle, - FCB->Connection.Object ); - RtlZeroMemory( &FCB->Connection, sizeof(FCB->Connection) ); + Status = TdiAssociateAddressFile( FCB->AddressFile.Handle, + FCB->Connection.Object ); } return Status;