From afed4330dac0dd738eab604274952901dfba5537 Mon Sep 17 00:00:00 2001 From: rubidium Date: Sat, 3 Oct 2009 14:48:12 +0000 Subject: (svn r17685) -Fix: autounpausing kept trying to unpause a loaded game that was paused due to an error. Just reject such savegames in dedicated servers. --- src/network/network.cpp | 2 +- src/saveload/afterload.cpp | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/network/network.cpp b/src/network/network.cpp index 4990237a3..6e3640692 100644 --- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -367,7 +367,7 @@ static uint NetworkCountActiveClients() /* Check if the minimum number of active clients has been reached and pause or unpause the game as appropriate */ static void CheckMinActiveClients() { - if (!_network_dedicated || _settings_client.network.min_active_clients == 0) return; + if (!_network_dedicated || _settings_client.network.min_active_clients == 0 || (_pause_mode & PM_PAUSED_ERROR) != 0) return; if (NetworkCountActiveClients() < _settings_client.network.min_active_clients) { if ((_pause_mode & PM_PAUSED_NORMAL) != 0) return; diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index 0124740ba..e4a70a9f7 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -408,6 +408,12 @@ bool AfterLoadGame() if (CheckSavegameVersion(119)) { _pause_mode = (_pause_mode == 2) ? PM_PAUSED_NORMAL : PM_UNPAUSED; + } else if (_network_dedicated && (_pause_mode & PM_PAUSED_ERROR) != 0) { + DEBUG(net, 0, "The loading savegame was paused due to an error state."); + DEBUG(net, 0, " The savegame cannot be used for multiplayer!"); + /* Restore the signals */ + ResetSignalHandlers(); + return false; } /* in very old versions, size of train stations was stored differently */ -- cgit v1.2.3-54-g00ecf