changeset 13178:ec4dc42ad747 draft

(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.
author rubidium <rubidium@openttd.org>
date Sat, 03 Oct 2009 14:48:12 +0000
parents 5d3ff7c33daf
children ac1b795b8da4
files src/network/network.cpp src/saveload/afterload.cpp
diffstat 2 files changed, 7 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/network/network.cpp
+++ b/src/network/network.cpp
@@ -367,7 +367,7 @@
 /* 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;
--- a/src/saveload/afterload.cpp
+++ b/src/saveload/afterload.cpp
@@ -408,6 +408,12 @@
 
 	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 */