diff --git a/src/TNetwork.cpp b/src/TNetwork.cpp index d0393e89..8764ed2a 100644 --- a/src/TNetwork.cpp +++ b/src/TNetwork.cpp @@ -62,15 +62,6 @@ TNetwork::TNetwork(TServer& Server, TPPSMonitor& PPSMonitor, TResourceManager& R , mResourceManager(ResourceManager) { Application::SetSubsystemStatus("TCPNetwork", Application::Status::Starting); Application::SetSubsystemStatus("UDPNetwork", Application::Status::Starting); - Application::RegisterShutdownHandler([&] { - beammp_debug("Kicking all players due to shutdown"); - Server.ForEachClient([&](std::weak_ptr client) -> bool { - if (!client.expired()) { - ClientKick(*client.lock(), "Server shutdown"); - } - return true; - }); - }); Application::RegisterShutdownHandler([&] { Application::SetSubsystemStatus("UDPNetwork", Application::Status::ShuttingDown); if (mUDPThread.joinable()) { diff --git a/src/main.cpp b/src/main.cpp index 7fb09e6c..160da0e5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -17,6 +17,7 @@ // along with this program. If not, see . #include "ArgsParser.h" +#include "Client.h" #include "Common.h" #include "Http.h" #include "LuaAPI.h" @@ -175,10 +176,6 @@ int BeamMPServerMain(MainArguments Arguments) { Application::SetSubsystemStatus("Main", Application::Status::ShuttingDown); Shutdown = true; }); - Application::RegisterShutdownHandler([] { - auto Futures = LuaAPI::MP::Engine->TriggerEvent("onShutdown", ""); - TLuaEngine::WaitForAll(Futures, std::chrono::seconds(5)); - }); TServer Server(Arguments.List); @@ -200,6 +197,20 @@ int BeamMPServerMain(MainArguments Arguments) { TPluginMonitor PluginMonitor(fs::path(Application::Settings.getAsString(Settings::Key::General_ResourceFolder)) / "Server", LuaEngine); + Application::RegisterShutdownHandler([] { + auto Futures = LuaAPI::MP::Engine->TriggerEvent("onShutdown", ""); + TLuaEngine::WaitForAll(Futures, std::chrono::seconds(5)); + }); + Application::RegisterShutdownHandler([&Server, &Network] { + beammp_debug("Kicking all players due to shutdown"); + Server.ForEachClient([&Network](std::weak_ptr client) -> bool { + if (!client.expired()) { + Network.ClientKick(*client.lock(), "Server shutdown"); + } + return true; + }); + }); + RegisterThread("Main(Waiting)"); std::set IgnoreSubsystems {