diff --git a/src/Network/Core.cpp b/src/Network/Core.cpp index 5cec91c..ab63bc0 100644 --- a/src/Network/Core.cpp +++ b/src/Network/Core.cpp @@ -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> futures; + void Parse(std::string Data, SOCKET CSocket) { + std::erase_if(futures, [](const std::future& 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;