From 7d03e0c4b787bcbc24e799bc7ef9e7dbc1830dc6 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Thu, 14 May 2026 22:07:17 +0100 Subject: [PATCH] Fix: Dedicated server signal handling for SIGTERM/SIGINT/SIGQUIT --- src/video/dedicated_v.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/video/dedicated_v.cpp b/src/video/dedicated_v.cpp index 8d78f7bf59..fb1d47709f 100644 --- a/src/video/dedicated_v.cpp +++ b/src/video/dedicated_v.cpp @@ -32,11 +32,13 @@ # include # define STDIN 0 /* file descriptor for standard input */ +/** Dedicated exit requested. */ +std::atomic _dedicated_exit_requested; + /* Signal handlers */ static void DedicatedSignalHandler(int sig) { - if (_game_mode == GM_NORMAL && _settings_client.gui.autosave_on_exit) DoExitSave(); - _exit_game = true; + _dedicated_exit_requested = true; signal(sig, DedicatedSignalHandler); } #endif @@ -220,5 +222,12 @@ void VideoDriver_Dedicated::MainLoop() this->Tick(); this->SleepTillNextTick(); + +#if defined(UNIX) + if (_dedicated_exit_requested) { + if (_game_mode == GM_NORMAL && _settings_client.gui.autosave_on_exit) DoExitSave(); + _exit_game = true; + } +#endif } }