- Revert r42358 due to what seems to be issues handling cleanup IRPs

svn path=/trunk/; revision=42360
This commit is contained in:
Cameron Gutman 2009-08-03 07:07:21 +00:00
parent 268d0a868c
commit 5e1ea71af7
4 changed files with 14 additions and 11 deletions

View file

@ -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;

View file

@ -29,6 +29,11 @@ NTSTATUS WarmSocketForConnection( PAFD_FCB FCB ) {
FCB->Connection.Object );
}
if (NT_SUCCESS(Status))
{
ObReferenceObject(FCB->Connection.Object);
}
return Status;
}

View file

@ -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 );
}

View file

@ -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,