From a5f7478b99a94947d27cf152217aa4a53b38352a Mon Sep 17 00:00:00 2001 From: aMannus Date: Wed, 18 Jan 2023 16:56:32 +0100 Subject: [PATCH] Fix CC connection bugs (#2367) --- soh/soh/Enhancements/crowd-control/CrowdControl.cpp | 8 +++++--- soh/soh/OTRGlobals.cpp | 5 +++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/soh/soh/Enhancements/crowd-control/CrowdControl.cpp b/soh/soh/Enhancements/crowd-control/CrowdControl.cpp index 2f5b1a3ac..3fbd24a90 100644 --- a/soh/soh/Enhancements/crowd-control/CrowdControl.cpp +++ b/soh/soh/Enhancements/crowd-control/CrowdControl.cpp @@ -101,7 +101,7 @@ void CrowdControl::Disable() { void CrowdControl::ListenToServer() { while (isEnabled) { - while (!connected) { + while (!connected && isEnabled) { SPDLOG_TRACE("[CrowdControl] Attempting to make connection to server..."); tcpsock = SDLNet_TCP_Open(&ip); @@ -112,8 +112,10 @@ void CrowdControl::ListenToServer() { } } - auto socketSet = SDLNet_AllocSocketSet(1); - SDLNet_TCP_AddSocket(socketSet, tcpsock); + SDLNet_SocketSet socketSet = SDLNet_AllocSocketSet(1); + if (tcpsock) { + SDLNet_TCP_AddSocket(socketSet, tcpsock); + } // Listen to socket messages while (connected && tcpsock && isEnabled) { diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index a5b390870..9011fcc79 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -461,6 +461,11 @@ extern "C" void InitOTR() { #ifdef ENABLE_CROWD_CONTROL CrowdControl::Instance = new CrowdControl(); CrowdControl::Instance->Init(); + if (CVar_GetS32("gCrowdControl", 0)) { + CrowdControl::Instance->Enable(); + } else { + CrowdControl::Instance->Disable(); + } #endif }