From 5e1ea71af7dcf90fb94a327dd4230921b511ad01 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Mon, 3 Aug 2009 07:07:21 +0000 Subject: [PATCH] - Revert r42358 due to what seems to be issues handling cleanup IRPs svn path=/trunk/; revision=42360 --- reactos/drivers/network/afd/afd/bind.c | 5 +++++ reactos/drivers/network/afd/afd/connect.c | 5 +++++ reactos/drivers/network/afd/afd/main.c | 12 ++---------- reactos/drivers/network/afd/afd/tdi.c | 3 ++- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/reactos/drivers/network/afd/afd/bind.c b/reactos/drivers/network/afd/afd/bind.c index 1b5072f6e43..d8d2c8ac935 100644 --- a/reactos/drivers/network/afd/afd/bind.c +++ b/reactos/drivers/network/afd/afd/bind.c @@ -33,6 +33,11 @@ NTSTATUS WarmSocketForBind( PAFD_FCB FCB ) { &FCB->AddressFile.Handle, &FCB->AddressFile.Object ); + if (NT_SUCCESS(Status)) + { + ObReferenceObject(FCB->AddressFile.Object); + } + AFD_DbgPrint(MID_TRACE,("Returning %x\n", Status)); return Status; diff --git a/reactos/drivers/network/afd/afd/connect.c b/reactos/drivers/network/afd/afd/connect.c index d9baa6dee4e..3b10ef138c5 100644 --- a/reactos/drivers/network/afd/afd/connect.c +++ b/reactos/drivers/network/afd/afd/connect.c @@ -29,6 +29,11 @@ NTSTATUS WarmSocketForConnection( PAFD_FCB FCB ) { FCB->Connection.Object ); } + if (NT_SUCCESS(Status)) + { + ObReferenceObject(FCB->Connection.Object); + } + return Status; } diff --git a/reactos/drivers/network/afd/afd/main.c b/reactos/drivers/network/afd/afd/main.c index 0d331493eb5..099e1586995 100644 --- a/reactos/drivers/network/afd/afd/main.c +++ b/reactos/drivers/network/afd/afd/main.c @@ -96,8 +96,6 @@ AfdCreateSocket(PDEVICE_OBJECT DeviceObject, PIRP Irp, FCB->DeviceExt = DeviceExt; FCB->Recv.Size = DEFAULT_RECEIVE_WINDOW_SIZE; FCB->Send.Size = DEFAULT_SEND_WINDOW_SIZE; - FCB->AddressFile.Handle = INVALID_HANDLE_VALUE; - FCB->Connection.Handle = INVALID_HANDLE_VALUE; KeInitializeSpinLock( &FCB->SpinLock ); ExInitializeFastMutex( &FCB->Mutex ); @@ -224,21 +222,15 @@ VOID CleanupSocket( PAFD_FCB FCB ) { FCB->RemoteAddress = NULL; } if( FCB->Connection.Object ) { + ZwClose(FCB->Connection.Handle); ObDereferenceObject(FCB->Connection.Object); FCB->Connection.Object = NULL; } if( FCB->AddressFile.Object ) { + ZwClose(FCB->AddressFile.Handle); ObDereferenceObject(FCB->AddressFile.Object); FCB->AddressFile.Object = NULL; } - if( FCB->AddressFile.Handle != INVALID_HANDLE_VALUE ) { - ZwClose(FCB->AddressFile.Handle); - FCB->AddressFile.Handle = INVALID_HANDLE_VALUE; - } - if( FCB->Connection.Handle != INVALID_HANDLE_VALUE ) { - ZwClose(FCB->Connection.Handle); - FCB->Connection.Handle = INVALID_HANDLE_VALUE; - } SocketStateUnlock( FCB ); } diff --git a/reactos/drivers/network/afd/afd/tdi.c b/reactos/drivers/network/afd/afd/tdi.c index 82e0f0986e8..036551df455 100644 --- a/reactos/drivers/network/afd/afd/tdi.c +++ b/reactos/drivers/network/afd/afd/tdi.c @@ -146,13 +146,14 @@ static NTSTATUS TdiOpenDevice( } if (!NT_SUCCESS(Status)) { - *Handle = INVALID_HANDLE_VALUE; + *Handle = NULL; *Object = NULL; } return Status; } + NTSTATUS TdiOpenAddressFile( PUNICODE_STRING DeviceName, PTRANSPORT_ADDRESS Name,