From 54313744910c59a42137a7e83e10679383237b69 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Thu, 11 Feb 2021 12:33:05 -0500 Subject: [PATCH] Core/Networking: Fix infinite loop and deadlock when closing socket. --- Source/Framework/Networking/SocketBase.cs | 2 +- Source/Game/Server/WorldSession.cs | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Source/Framework/Networking/SocketBase.cs b/Source/Framework/Networking/SocketBase.cs index 3a0655154..60729ac9d 100644 --- a/Source/Framework/Networking/SocketBase.cs +++ b/Source/Framework/Networking/SocketBase.cs @@ -119,7 +119,7 @@ namespace Framework.Networking public void CloseSocket() { - if (_socket == null) + if (_socket == null || !_socket.Connected) return; try diff --git a/Source/Game/Server/WorldSession.cs b/Source/Game/Server/WorldSession.cs index 1056367e7..c01f007f2 100644 --- a/Source/Game/Server/WorldSession.cs +++ b/Source/Game/Server/WorldSession.cs @@ -74,7 +74,10 @@ namespace Game for (byte i = 0; i < 2; ++i) { if (m_Socket[i] != null) + { m_Socket[i].CloseSocket(); + m_Socket[i] = null; + } } // empty incoming packet queue