Add mutex to CoreSend

This commit is contained in:
Tixx 2024-10-10 15:49:56 +02:00
parent 0b35f0484f
commit 06cb366bb5

View File

@ -30,6 +30,7 @@
#include <nlohmann/json.hpp>
#include <set>
#include <thread>
#include <mutex>
#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;