From fb1a1ab85e8108d2469e88ad11596a6ab6455b7e Mon Sep 17 00:00:00 2001 From: Peter Hater <7element@mail.bg> Date: Fri, 26 May 2017 15:27:45 +0000 Subject: [PATCH] [MSAFD] Don't update shared state on close if we still have active references to the socket. Checked also by ws2_32:close API test CORE-12029 svn path=/trunk/; revision=74673 --- reactos/dll/win32/msafd/misc/dllmain.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/reactos/dll/win32/msafd/misc/dllmain.c b/reactos/dll/win32/msafd/misc/dllmain.c index 7bd45bf8ee2..747299e77f5 100644 --- a/reactos/dll/win32/msafd/misc/dllmain.c +++ b/reactos/dll/win32/msafd/misc/dllmain.c @@ -677,15 +677,16 @@ WSPCloseSocket(IN SOCKET Handle, if (lpErrno) *lpErrno = WSAENOTSOCK; return SOCKET_ERROR; } - /* Set the state to close */ - OldState = Socket->SharedData->State; - Socket->SharedData->State = SocketClosed; /* Decrement reference count on SharedData */ References = InterlockedDecrement(&Socket->SharedData->RefCount); if (References) goto ok; + /* Set the state to close */ + OldState = Socket->SharedData->State; + Socket->SharedData->State = SocketClosed; + /* If SO_LINGER is ON and the Socket is connected, we need to disconnect */ /* FIXME: Should we do this on Datagram Sockets too? */ if ((OldState == SocketConnected) && (Socket->SharedData->LingerData.l_onoff)) -- 2.17.1