Author: cgutman
Date: Sun Apr  5 22:11:24 2009
New Revision: 40376

URL: http://svn.reactos.org/svn/reactos?rev=40376&view=rev
Log:
 - Revert r40367
 - Fixes abyss server startup after installing

Modified:
    trunk/reactos/drivers/network/tcpip/tcpip/fileobjs.c

Modified: trunk/reactos/drivers/network/tcpip/tcpip/fileobjs.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/tcpip/tcpip/fileobjs.c?rev=40376&r1=40375&r2=40376&view=diff
==============================================================================
--- trunk/reactos/drivers/network/tcpip/tcpip/fileobjs.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/network/tcpip/tcpip/fileobjs.c [iso-8859-1] Sun Apr  
5 22:11:24 2009
@@ -139,11 +139,11 @@
 }
 
 
-NTSTATUS FileCloseAddress(PTDI_REQUEST Request)
-/*
- * FUNCTION: Closes an address file object
- * ARGUMENTS:
- *     AddrFile = Pointer to address file object to close
+VOID DeleteAddress(PADDRESS_FILE AddrFile)
+/*
+ * FUNCTION: Deletes an address file object
+ * ARGUMENTS:
+ *     AddrFile = Pointer to address file object to delete
  */
 {
   KIRQL OldIrql;
@@ -151,15 +151,15 @@
   PLIST_ENTRY NextEntry;
   PDATAGRAM_SEND_REQUEST SendRequest;
   PDATAGRAM_RECEIVE_REQUEST ReceiveRequest;
-  PADDRESS_FILE AddrFile = Request->Handle.AddressHandle;
-
-  TI_DbgPrint(MID_TRACE, ("Called.\n"));
+
+  TI_DbgPrint(MID_TRACE, ("Called.\n"));
+
+  /* Remove address file from the global list */
+  TcpipAcquireSpinLock(&AddressFileListLock, &OldIrql);
+  RemoveEntryList(&AddrFile->ListEntry);
+  TcpipReleaseSpinLock(&AddressFileListLock, OldIrql);
 
   TcpipAcquireSpinLock(&AddrFile->Lock, &OldIrql);
-
-  /* Set address file object exclusive to us */
-  AF_SET_BUSY(AddrFile);
-  AF_CLR_VALID(AddrFile);
 
   /* FIXME: Kill TCP connections on this address file object */
 
@@ -197,9 +197,9 @@
 
   TcpipReleaseSpinLock(&AddrFile->Lock, OldIrql);
 
-  TI_DbgPrint(MAX_TRACE, ("Leaving.\n"));
-
-  return STATUS_SUCCESS;
+  (*AddrFile->Free)(AddrFile);
+
+  TI_DbgPrint(MAX_TRACE, ("Leaving.\n"));
 }
 
 
@@ -339,7 +339,7 @@
  * RETURNS:
  *     Status of operation
  */
-NTSTATUS FileFreeAddress(
+NTSTATUS FileCloseAddress(
   PTDI_REQUEST Request)
 {
   KIRQL OldIrql;
@@ -350,10 +350,13 @@
 
   AddrFile = Request->Handle.AddressHandle;
 
-  /* Remove address file from the global list */
-  TcpipAcquireSpinLock(&AddressFileListLock, &OldIrql);
-  RemoveEntryList(&AddrFile->ListEntry);
-  TcpipReleaseSpinLock(&AddressFileListLock, OldIrql);
+  TcpipAcquireSpinLock(&AddrFile->Lock, &OldIrql);
+
+  /* Set address file object exclusive to us */
+  AF_SET_BUSY(AddrFile);
+  AF_CLR_VALID(AddrFile);
+
+  TcpipReleaseSpinLock(&AddrFile->Lock, OldIrql);
 
   /* Protocol specific handling */
   switch (AddrFile->Protocol) {
@@ -369,9 +372,33 @@
     UDPFreePort( AddrFile->Port );
     break;
   }
-  TI_DbgPrint(MAX_TRACE, ("Leaving.\n"));
-
-  (*AddrFile->Free)(AddrFile);
+
+  TI_DbgPrint(MAX_TRACE, ("Leaving.\n"));
+
+  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;
 }

Reply via email to