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;
}
std::vector<std::future<void>> futures;
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;
if (Data.length() > 1)
SubCode = Data.at(1);
@ -213,9 +223,9 @@ void Parse(std::string Data, SOCKET CSocket) {
Terminate = true;
TCPTerminate = true;
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"));
});
}));
}
break;
case 'C':
@ -312,9 +322,9 @@ void Parse(std::string Data, SOCKET CSocket) {
}
Data = "N" + Auth.dump();
} 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)));
});
}));
Data.clear();
}
break;