- Revert r40367

- Fixes abyss server startup after installing

svn path=/trunk/; revision=40376
This commit is contained in:
Cameron Gutman 2009-04-05 18:11:24 +00:00
parent a3e2c4bb4f
commit 4d50892aaa

View file

@ -139,11 +139,11 @@ VOID ControlChannelFree(
} }
NTSTATUS FileCloseAddress(PTDI_REQUEST Request) VOID DeleteAddress(PADDRESS_FILE AddrFile)
/* /*
* FUNCTION: Closes an address file object * FUNCTION: Deletes an address file object
* ARGUMENTS: * ARGUMENTS:
* AddrFile = Pointer to address file object to close * AddrFile = Pointer to address file object to delete
*/ */
{ {
KIRQL OldIrql; KIRQL OldIrql;
@ -151,15 +151,15 @@ NTSTATUS FileCloseAddress(PTDI_REQUEST Request)
PLIST_ENTRY NextEntry; PLIST_ENTRY NextEntry;
PDATAGRAM_SEND_REQUEST SendRequest; PDATAGRAM_SEND_REQUEST SendRequest;
PDATAGRAM_RECEIVE_REQUEST ReceiveRequest; PDATAGRAM_RECEIVE_REQUEST ReceiveRequest;
PADDRESS_FILE AddrFile = Request->Handle.AddressHandle;
TI_DbgPrint(MID_TRACE, ("Called.\n")); TI_DbgPrint(MID_TRACE, ("Called.\n"));
TcpipAcquireSpinLock(&AddrFile->Lock, &OldIrql); /* Remove address file from the global list */
TcpipAcquireSpinLock(&AddressFileListLock, &OldIrql);
RemoveEntryList(&AddrFile->ListEntry);
TcpipReleaseSpinLock(&AddressFileListLock, OldIrql);
/* Set address file object exclusive to us */ TcpipAcquireSpinLock(&AddrFile->Lock, &OldIrql);
AF_SET_BUSY(AddrFile);
AF_CLR_VALID(AddrFile);
/* FIXME: Kill TCP connections on this address file object */ /* FIXME: Kill TCP connections on this address file object */
@ -197,9 +197,9 @@ NTSTATUS FileCloseAddress(PTDI_REQUEST Request)
TcpipReleaseSpinLock(&AddrFile->Lock, OldIrql); TcpipReleaseSpinLock(&AddrFile->Lock, OldIrql);
TI_DbgPrint(MAX_TRACE, ("Leaving.\n")); (*AddrFile->Free)(AddrFile);
return STATUS_SUCCESS; TI_DbgPrint(MAX_TRACE, ("Leaving.\n"));
} }
@ -339,7 +339,7 @@ NTSTATUS FileOpenAddress(
* RETURNS: * RETURNS:
* Status of operation * Status of operation
*/ */
NTSTATUS FileFreeAddress( NTSTATUS FileCloseAddress(
PTDI_REQUEST Request) PTDI_REQUEST Request)
{ {
KIRQL OldIrql; KIRQL OldIrql;
@ -350,10 +350,13 @@ NTSTATUS FileFreeAddress(
AddrFile = Request->Handle.AddressHandle; AddrFile = Request->Handle.AddressHandle;
/* Remove address file from the global list */ TcpipAcquireSpinLock(&AddrFile->Lock, &OldIrql);
TcpipAcquireSpinLock(&AddressFileListLock, &OldIrql);
RemoveEntryList(&AddrFile->ListEntry); /* Set address file object exclusive to us */
TcpipReleaseSpinLock(&AddressFileListLock, OldIrql); AF_SET_BUSY(AddrFile);
AF_CLR_VALID(AddrFile);
TcpipReleaseSpinLock(&AddrFile->Lock, OldIrql);
/* Protocol specific handling */ /* Protocol specific handling */
switch (AddrFile->Protocol) { switch (AddrFile->Protocol) {
@ -369,9 +372,33 @@ NTSTATUS FileFreeAddress(
UDPFreePort( AddrFile->Port ); UDPFreePort( AddrFile->Port );
break; break;
} }
TI_DbgPrint(MAX_TRACE, ("Leaving.\n")); TI_DbgPrint(MAX_TRACE, ("Leaving.\n"));
(*AddrFile->Free)(AddrFile); return Status;
}
/*
* FUNCTION: Closes an address file object
* ARGUMENTS:
* Request = Pointer to TDI request structure for this request
* RETURNS:
* Status of operation
*/
NTSTATUS FileFreeAddress(
PTDI_REQUEST Request)
{
PADDRESS_FILE AddrFile;
NTSTATUS Status = STATUS_SUCCESS;
AddrFile = Request->Handle.AddressHandle;
TI_DbgPrint(MID_TRACE, ("Called.\n"));
DeleteAddress(AddrFile);
TI_DbgPrint(MAX_TRACE, ("Leaving.\n"));
return Status; return Status;
} }