From b2c96e402da107310196cb9d9ef40c6169034951 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Mon, 7 Jun 2010 05:40:08 +0000 Subject: [PATCH] [MSAFD] - Fix a bug in GetSocketStructure that resulted in us missing the last entry of the list - Remove an "optimization" which was supposed to find an unused socket entry (which it almost never did) but now just corrupts the linked list by trashing our NextSocket pointer svn path=/trunk/; revision=47656 --- reactos/dll/win32/msafd/misc/dllmain.c | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/reactos/dll/win32/msafd/misc/dllmain.c b/reactos/dll/win32/msafd/misc/dllmain.c index f06b0a508d2..9b459b7d126 100644 --- a/reactos/dll/win32/msafd/misc/dllmain.c +++ b/reactos/dll/win32/msafd/misc/dllmain.c @@ -60,7 +60,7 @@ WSPSocket(int AddressFamily, ULONG SizeOfEA; PAFD_CREATE_PACKET AfdPacket; HANDLE Sock; - PSOCKET_INFORMATION Socket = NULL, PrevSocket = NULL; + PSOCKET_INFORMATION Socket = NULL; PFILE_FULL_EA_INFORMATION EABuffer = NULL; PHELPER_DATA HelperData; PVOID HelperDLLContext; @@ -260,17 +260,6 @@ WSPSocket(int AddressFamily, /* Save Handle */ Socket->Handle = (SOCKET)Sock; - /* XXX See if there's a structure we can reuse -- We need to do this - * more properly. */ - PrevSocket = GetSocketStructure( (SOCKET)Sock ); - - if( PrevSocket ) - { - RtlCopyMemory( PrevSocket, Socket, sizeof(*Socket) ); - RtlFreeHeap( GlobalHeap, 0, Socket ); - Socket = PrevSocket; - } - /* Save Group Info */ if (g != 0) { @@ -2325,15 +2314,8 @@ GetSocketStructure(SOCKET Handle) { PSOCKET_INFORMATION CurrentSocket; - if (!SocketListHead) - return NULL; - - /* This is a special case */ - if (SocketListHead->Handle == Handle) - return SocketListHead; - CurrentSocket = SocketListHead; - while (CurrentSocket->NextSocket) + while (CurrentSocket) { if (CurrentSocket->Handle == Handle) return CurrentSocket;