From 06cb366bb569c2cbb5190947a025d53694f5505e Mon Sep 17 00:00:00 2001 From: Tixx <83774803+WiserTixx@users.noreply.github.com> Date: Thu, 10 Oct 2024 15:49:56 +0200 Subject: [PATCH] Add mutex to CoreSend --- src/Network/Core.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/Network/Core.cpp b/src/Network/Core.cpp index 2a0ca5a..fb4ab71 100644 --- a/src/Network/Core.cpp +++ b/src/Network/Core.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include "Options.h" extern int TraceBack; @@ -87,7 +88,11 @@ void StartSync(const std::string& Data) { info("Connecting to server"); } +std::mutex sendMutex; + void CoreSend(std::string data) { + std::lock_guard lock(sendMutex); + if (CoreSocket != -1) { int res = send(CoreSocket, (data + "\n").c_str(), int(data.size()) + 1, 0); if (res < 0) { @@ -116,7 +121,7 @@ void Parse(std::string Data, SOCKET CSocket) { TCPTerminate = true; Data.clear(); std::thread([&]() { - CoreSend(Code + HTTP::Get("https://backend.beammp.com/servers-info")); + CoreSend("B" + HTTP::Get("https://backend.beammp.com/servers-info")); }).detach(); break; case 'C': @@ -215,7 +220,7 @@ void Parse(std::string Data, SOCKET CSocket) { } else { Data.clear(); std::thread([&]() { - CoreSend(Code + Login(Data.substr(Data.find(':') + 1))); + CoreSend("N" + Login(Data.substr(Data.find(':') + 1))); }).detach(); } break; @@ -232,12 +237,8 @@ void Parse(std::string Data, SOCKET CSocket) { Data.clear(); break; } - if (!Data.empty() && CSocket != -1) { - int res = send(CSocket, (Data + "\n").c_str(), int(Data.size()) + 1, 0); - if (res < 0) { - debug("(Core) send failed with error: " + std::to_string(WSAGetLastError())); - } - } + if (!Data.empty()) + CoreSend(Data); } void GameHandler(SOCKET Client) { CoreSocket = Client;