[ros-diffs] [cgutman] 35477: - Reapply arty's datagram cancellation work - Part 1 of 3

cgutman at svn.reactos.org cgutman at svn.reactos.org
Wed Aug 20 16:21:08 CEST 2008


Author: cgutman
Date: Wed Aug 20 09:21:08 2008
New Revision: 35477

URL: http://svn.reactos.org/svn/reactos?rev=35477&view=rev
Log:
 - Reapply arty's datagram cancellation work
 - Part 1 of 3

Modified:
    branches/aicom-network-fixes/drivers/network/afd/afd/lock.c
    branches/aicom-network-fixes/drivers/network/afd/afd/tdiconn.c
    branches/aicom-network-fixes/drivers/network/afd/afd/write.c
    branches/aicom-network-fixes/drivers/network/afd/include/afd.h

Modified: branches/aicom-network-fixes/drivers/network/afd/afd/lock.c
URL: http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/drivers/network/afd/afd/lock.c?rev=35477&r1=35476&r2=35477&view=diff
==============================================================================
--- branches/aicom-network-fixes/drivers/network/afd/afd/lock.c [iso-8859-1] (original)
+++ branches/aicom-network-fixes/drivers/network/afd/afd/lock.c [iso-8859-1] Wed Aug 20 09:21:08 2008
@@ -68,7 +68,7 @@
 			 BOOLEAN Write, BOOLEAN LockAddress ) {
     UINT i;
     /* Copy the buffer array so we don't lose it */
-    UINT Lock = (LockAddress && AddressLen) ? 2 : 0;
+    UINT Lock = LockAddress ? 2 : 0;
     UINT Size = sizeof(AFD_WSABUF) * (Count + Lock);
     PAFD_WSABUF NewBuf = ExAllocatePool( PagedPool, Size * 2 );
     PMDL NewMdl;
@@ -80,13 +80,16 @@
 
         _SEH_TRY {
             RtlCopyMemory( NewBuf, Buf, sizeof(AFD_WSABUF) * Count );
-            if( LockAddress ) {
+            if( LockAddress && AddressLen ) {
                 NewBuf[Count].buf = AddressBuf;
                 NewBuf[Count].len = *AddressLen;
                 Count++;
                 NewBuf[Count].buf = (PVOID)AddressLen;
                 NewBuf[Count].len = sizeof(*AddressLen);
                 Count++;
+            } else if( LockAddress ) {
+                RtlZeroMemory(NewBuf, sizeof(*NewBuf) * 2);
+                Count += 2;
             }
         } _SEH_HANDLE {
             AFD_DbgPrint(MIN_TRACE,("Access violation copying buffer info "

Modified: branches/aicom-network-fixes/drivers/network/afd/afd/tdiconn.c
URL: http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/drivers/network/afd/afd/tdiconn.c?rev=35477&r1=35476&r2=35477&view=diff
==============================================================================
--- branches/aicom-network-fixes/drivers/network/afd/afd/tdiconn.c [iso-8859-1] (original)
+++ branches/aicom-network-fixes/drivers/network/afd/afd/tdiconn.c [iso-8859-1] Wed Aug 20 09:21:08 2008
@@ -172,54 +172,6 @@
     return Status;
 }
 
-NTSTATUS
-TdiBuildConnectionInfoPair
-( PTDI_CONNECTION_INFO_PAIR ConnectionInfo,
-  PTRANSPORT_ADDRESS From, PTRANSPORT_ADDRESS To )
-    /*
-     * FUNCTION: Fill a TDI_CONNECTION_INFO_PAIR struct will the two addresses
-     *           given.
-     * ARGUMENTS:
-     *   ConnectionInfo: The pair
-     *   From:           The from address
-     *   To:             The to address
-     * RETURNS:
-     *   Status of the operation
-     */
-{
-    PCHAR LayoutFrame;
-    UINT SizeOfEntry;
-    ULONG TdiAddressSize;
-    PTDI_CONNECTION_INFORMATION FromTdiConn, ToTdiConn;
-
-    /* FIXME: Get from socket information */
-    TdiAddressSize = TdiAddressSizeFromType(From->Address[0].AddressType);
-    SizeOfEntry = TdiAddressSize + sizeof(TDI_CONNECTION_INFORMATION);
-
-    LayoutFrame = (PCHAR)ExAllocatePool(NonPagedPool, 2 * SizeOfEntry);
-
-    if (!LayoutFrame) {
-        AFD_DbgPrint(MIN_TRACE, ("Insufficient resources.\n"));
-        return STATUS_INSUFFICIENT_RESOURCES;
-    }
-
-    RtlZeroMemory( LayoutFrame, 2 * SizeOfEntry );
-
-	FromTdiConn = (PTDI_CONNECTION_INFORMATION)LayoutFrame;
-	ToTdiConn = (PTDI_CONNECTION_INFORMATION)LayoutFrame + SizeOfEntry;
-
-    if (From != NULL) {
-	TdiBuildConnectionInfoInPlace( FromTdiConn, From );
-    } else {
-	TdiBuildNullConnectionInfoInPlace( FromTdiConn,
-					   From->Address[0].AddressType );
-    }
-
-    TdiBuildConnectionInfoInPlace( ToTdiConn, To );
-
-    return STATUS_SUCCESS;
-}
-
 PTA_ADDRESS TdiGetRemoteAddress( PTDI_CONNECTION_INFORMATION TdiConn )
     /*
      * Convenience function that rounds out the abstraction of

Modified: branches/aicom-network-fixes/drivers/network/afd/afd/write.c
URL: http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/drivers/network/afd/afd/write.c?rev=35477&r1=35476&r2=35477&view=diff
==============================================================================
--- branches/aicom-network-fixes/drivers/network/afd/afd/write.c [iso-8859-1] (original)
+++ branches/aicom-network-fixes/drivers/network/afd/afd/write.c [iso-8859-1] Wed Aug 20 09:21:08 2008
@@ -47,7 +47,6 @@
 
     if( FCB->State == SOCKET_STATE_CLOSED ) {
 	SocketStateUnlock( FCB );
-	DestroySocket( FCB );
 	return STATUS_SUCCESS;
     }
 
@@ -179,12 +178,6 @@
     FCB->SendIrp.InFlightRequest = NULL;
     /* Request is not in flight any longer */
 
-    if( FCB->State == SOCKET_STATE_CLOSED ) {
-	SocketStateUnlock( FCB );
-	DestroySocket( FCB );
-	return STATUS_SUCCESS;
-    }
-
     SocketStateUnlock( FCB );
 
     return STATUS_SUCCESS;

Modified: branches/aicom-network-fixes/drivers/network/afd/include/afd.h
URL: http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/drivers/network/afd/include/afd.h?rev=35477&r1=35476&r2=35477&view=diff
==============================================================================
--- branches/aicom-network-fixes/drivers/network/afd/include/afd.h [iso-8859-1] (original)
+++ branches/aicom-network-fixes/drivers/network/afd/include/afd.h [iso-8859-1] Wed Aug 20 09:21:08 2008
@@ -196,6 +196,7 @@
     PVOID Context;
     DWORD PollState;
     UINT ContextSize;
+    PIRP PendingClose;
     LIST_ENTRY PendingIrpList[MAX_FUNCTIONS];
     LIST_ENTRY DatagramList;
     LIST_ENTRY PendingConnections;



More information about the Ros-diffs mailing list