mirror of
https://github.com/BeamMP/BeamMP-Launcher.git
synced 2025-07-01 23:46:59 +00:00
Add mutex to CoreSend
This commit is contained in:
parent
0b35f0484f
commit
06cb366bb5
@ -30,6 +30,7 @@
|
|||||||
#include <nlohmann/json.hpp>
|
#include <nlohmann/json.hpp>
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
#include <mutex>
|
||||||
#include "Options.h"
|
#include "Options.h"
|
||||||
|
|
||||||
extern int TraceBack;
|
extern int TraceBack;
|
||||||
@ -87,7 +88,11 @@ void StartSync(const std::string& Data) {
|
|||||||
info("Connecting to server");
|
info("Connecting to server");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::mutex sendMutex;
|
||||||
|
|
||||||
void CoreSend(std::string data) {
|
void CoreSend(std::string data) {
|
||||||
|
std::lock_guard lock(sendMutex);
|
||||||
|
|
||||||
if (CoreSocket != -1) {
|
if (CoreSocket != -1) {
|
||||||
int res = send(CoreSocket, (data + "\n").c_str(), int(data.size()) + 1, 0);
|
int res = send(CoreSocket, (data + "\n").c_str(), int(data.size()) + 1, 0);
|
||||||
if (res < 0) {
|
if (res < 0) {
|
||||||
@ -116,7 +121,7 @@ void Parse(std::string Data, SOCKET CSocket) {
|
|||||||
TCPTerminate = true;
|
TCPTerminate = true;
|
||||||
Data.clear();
|
Data.clear();
|
||||||
std::thread([&]() {
|
std::thread([&]() {
|
||||||
CoreSend(Code + HTTP::Get("https://backend.beammp.com/servers-info"));
|
CoreSend("B" + HTTP::Get("https://backend.beammp.com/servers-info"));
|
||||||
}).detach();
|
}).detach();
|
||||||
break;
|
break;
|
||||||
case 'C':
|
case 'C':
|
||||||
@ -215,7 +220,7 @@ void Parse(std::string Data, SOCKET CSocket) {
|
|||||||
} else {
|
} else {
|
||||||
Data.clear();
|
Data.clear();
|
||||||
std::thread([&]() {
|
std::thread([&]() {
|
||||||
CoreSend(Code + Login(Data.substr(Data.find(':') + 1)));
|
CoreSend("N" + Login(Data.substr(Data.find(':') + 1)));
|
||||||
}).detach();
|
}).detach();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -232,12 +237,8 @@ void Parse(std::string Data, SOCKET CSocket) {
|
|||||||
Data.clear();
|
Data.clear();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (!Data.empty() && CSocket != -1) {
|
if (!Data.empty())
|
||||||
int res = send(CSocket, (Data + "\n").c_str(), int(Data.size()) + 1, 0);
|
CoreSend(Data);
|
||||||
if (res < 0) {
|
|
||||||
debug("(Core) send failed with error: " + std::to_string(WSAGetLastError()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
void GameHandler(SOCKET Client) {
|
void GameHandler(SOCKET Client) {
|
||||||
CoreSocket = Client;
|
CoreSocket = Client;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user