Never call TdiCloseDevice when warming up a socket
authorHervé Poussineau <hpoussin@reactos.org>
Mon, 24 Sep 2007 08:39:23 +0000 (08:39 +0000)
committerHervé Poussineau <hpoussin@reactos.org>
Mon, 24 Sep 2007 08:39:23 +0000 (08:39 +0000)
svn path=/trunk/; revision=29174

reactos/drivers/network/afd/afd/bind.c
reactos/drivers/network/afd/afd/connect.c

index e215f95..d11c2a9 100644 (file)
 #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 ) {
-       Status = TdiOpenAddressFile
-           ( &FCB->TdiDeviceName,
-             FCB->LocalAddress,
-             &FCB->AddressFile.Handle,
-             &FCB->AddressFile.Object );
+    if( !FCB->LocalAddress ) {
+        AFD_DbgPrint(MID_TRACE,("No local address\n"));
+        return STATUS_UNSUCCESSFUL;
     }
 
-    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));
 
index 6f82611..32befab 100644 (file)
@@ -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;