From fb1a75454e8febaf3f451005fa4c67cc543c8e2b Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Mon, 20 Jun 2011 17:35:02 +0000 Subject: [PATCH] [MSAFD] - Mark the accepted socket as connected - Fixes graceful disconnect on accepted sockets svn path=/trunk/; revision=52389 --- reactos/dll/win32/msafd/misc/dllmain.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/reactos/dll/win32/msafd/misc/dllmain.c b/reactos/dll/win32/msafd/misc/dllmain.c index 9e080e87661..517d2209d17 100644 --- a/reactos/dll/win32/msafd/misc/dllmain.c +++ b/reactos/dll/win32/msafd/misc/dllmain.c @@ -1047,6 +1047,7 @@ WSPAccept(SOCKET Handle, ULONG CallBack; WSAPROTOCOL_INFOW ProtocolInfo; SOCKET AcceptSocket; + PSOCKET_INFORMATION AcceptSocketInfo; UCHAR ReceiveBuffer[0x1A]; HANDLE SockEvent; @@ -1362,6 +1363,17 @@ WSPAccept(SOCKET Handle, MsafdReturnWithErrno( Status, lpErrno, 0, NULL ); return INVALID_SOCKET; } + + AcceptSocketInfo = GetSocketStructure(AcceptSocket); + if (!AcceptSocketInfo) + { + NtClose(SockEvent); + WSPCloseSocket( AcceptSocket, lpErrno ); + MsafdReturnWithErrno( STATUS_INVALID_CONNECTION, lpErrno, 0, NULL ); + return INVALID_SOCKET; + } + + AcceptSocketInfo->SharedData.State = SocketConnected; /* Return Address in SOCKADDR FORMAT */ if( SocketAddress )