[ros-diffs] [cgutman] 40342: - RapidSVN doesn't figure out that when I right click afd that I want EVERYTHING changed in afd to be commited ; )

cgutman at svn.reactos.org cgutman at svn.reactos.org
Fri Apr 3 07:31:01 CEST 2009


Author: cgutman
Date: Fri Apr  3 09:31:00 2009
New Revision: 40342

URL: http://svn.reactos.org/svn/reactos?rev=40342&view=rev
Log:
 - RapidSVN doesn't figure out that when I right click afd that I want EVERYTHING changed in afd to be commited ;)

Modified:
    trunk/reactos/drivers/network/afd/afd/listen.c
    trunk/reactos/drivers/network/afd/afd/read.c

Modified: trunk/reactos/drivers/network/afd/afd/listen.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/afd/afd/listen.c?rev=40342&r1=40341&r2=40342&view=diff
==============================================================================
--- trunk/reactos/drivers/network/afd/afd/listen.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/network/afd/afd/listen.c [iso-8859-1] Fri Apr  3 09:31:00 2009
@@ -95,7 +95,7 @@
     NTSTATUS Status = STATUS_SUCCESS;
     PAFD_FCB FCB = (PAFD_FCB)Context;
     PAFD_TDI_OBJECT_QELT Qelt;
-    PLIST_ENTRY NextIrpEntry;
+    PLIST_ENTRY NextIrpEntry, QeltEntry;
     PIRP NextIrp;
 
     if( !SocketAcquireStateLock( FCB ) ) {
@@ -116,6 +116,27 @@
 	       if( NextIrp->MdlAddress ) UnlockRequest( NextIrp, IoGetCurrentIrpStackLocation( NextIrp ) );
 	       IoCompleteRequest( NextIrp, IO_NETWORK_INCREMENT );
         }
+
+        /* Free all pending connections */
+        while( !IsListEmpty( &FCB->PendingConnections ) ) {
+               QeltEntry = RemoveHeadList(&FCB->PendingConnections);
+               Qelt = CONTAINING_RECORD(QeltEntry, AFD_TDI_OBJECT_QELT, ListEntry);
+               ExFreePool(Qelt);
+        }
+
+        /* Free ConnectionReturnInfo and ConnectionCallInfo */
+        if (FCB->ListenIrp.ConnectionReturnInfo)
+        {
+            ExFreePool(FCB->ListenIrp.ConnectionReturnInfo);
+            FCB->ListenIrp.ConnectionReturnInfo = NULL;
+        }
+
+        if (FCB->ListenIrp.ConnectionCallInfo)
+        {
+            ExFreePool(FCB->ListenIrp.ConnectionCallInfo);
+            FCB->ListenIrp.ConnectionCallInfo = NULL;
+        }
+
 	SocketStateUnlock( FCB );
 	return STATUS_FILE_CLOSED;
     }
@@ -381,7 +402,7 @@
 		  (PVOID *)&NewFileObject,
 		  NULL );
 
-            if( !NT_SUCCESS(Status) ) UnlockAndMaybeComplete( FCB, Status, Irp, 0 );
+            if( !NT_SUCCESS(Status) ) return UnlockAndMaybeComplete( FCB, Status, Irp, 0 );
 
             ASSERT(NewFileObject != FileObject);
             ASSERT(NewFileObject->FsContext != FCB);

Modified: trunk/reactos/drivers/network/afd/afd/read.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/afd/afd/read.c?rev=40342&r1=40341&r2=40342&view=diff
==============================================================================
--- trunk/reactos/drivers/network/afd/afd/read.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/network/afd/afd/read.c [iso-8859-1] Fri Apr  3 09:31:00 2009
@@ -460,7 +460,7 @@
     PAFD_RECV_INFO RecvReq;
     PAFD_STORED_DATAGRAM DatagramRecv;
     UINT DGSize = Irp->IoStatus.Information + sizeof( AFD_STORED_DATAGRAM );
-    PLIST_ENTRY NextIrpEntry;
+    PLIST_ENTRY NextIrpEntry, DatagramRecvEntry;
 
     AFD_DbgPrint(MID_TRACE,("Called on %x\n", FCB));
 
@@ -485,6 +485,15 @@
 	       if( NextIrp->MdlAddress ) UnlockRequest( NextIrp, IoGetCurrentIrpStackLocation( NextIrp ) );
 	       IoCompleteRequest( NextIrp, IO_NETWORK_INCREMENT );
         }
+
+        /* Free all items on the datagram list */
+        while( !IsListEmpty( &FCB->DatagramList ) ) {
+               DatagramRecvEntry = RemoveHeadList(&FCB->DatagramList);
+               DatagramRecv = CONTAINING_RECORD(DatagramRecvEntry, AFD_STORED_DATAGRAM, ListEntry);
+               ExFreePool( DatagramRecv->Address );
+               ExFreePool( DatagramRecv );
+        }
+
 	SocketStateUnlock( FCB );
 	return STATUS_FILE_CLOSED;
     }



More information about the Ros-diffs mailing list