Properly handle the future

This commit is contained in:
Tixx 2025-02-16 20:00:58 +01:00
parent 9e93fa35fa
commit d3bddb0203
No known key found for this signature in database
GPG Key ID: EC6E7A2BAABF0B8C

View File

@ -200,7 +200,17 @@ bool IsAllowedLink(const std::string& Link) {
return std::regex_search(Link, link_match, link_pattern) && link_match.position() == 0; return std::regex_search(Link, link_match, link_pattern) && link_match.position() == 0;
} }
std::vector<std::future<void>> futures;
void Parse(std::string Data, SOCKET CSocket) { void Parse(std::string Data, SOCKET CSocket) {
std::erase_if(futures, [](const std::future<void>& f) {
if (f.wait_for(std::chrono::seconds(0)) == std::future_status::ready) {
return true;
}
return false;
});
char Code = Data.at(0), SubCode = 0; char Code = Data.at(0), SubCode = 0;
if (Data.length() > 1) if (Data.length() > 1)
SubCode = Data.at(1); SubCode = Data.at(1);
@ -213,9 +223,9 @@ void Parse(std::string Data, SOCKET CSocket) {
Terminate = true; Terminate = true;
TCPTerminate = true; TCPTerminate = true;
Data.clear(); Data.clear();
auto future = std::async(std::launch::async, []() { futures.push_back(std::async(std::launch::async, []() {
CoreSend("B" + HTTP::Get("https://backend.beammp.com/servers-info")); CoreSend("B" + HTTP::Get("https://backend.beammp.com/servers-info"));
}); }));
} }
break; break;
case 'C': case 'C':
@ -312,9 +322,9 @@ void Parse(std::string Data, SOCKET CSocket) {
} }
Data = "N" + Auth.dump(); Data = "N" + Auth.dump();
} else { } else {
auto future = std::async(std::launch::async, [data = std::move(Data)]() { futures.push_back(std::async(std::launch::async, [data = std::move(Data)]() {
CoreSend("N" + Login(data.substr(data.find(':') + 1))); CoreSend("N" + Login(data.substr(data.find(':') + 1)));
}); }));
Data.clear(); Data.clear();
} }
break; break;