diff --git a/Torch.API/ITorchConfig.cs b/Torch.API/ITorchConfig.cs index 5d03cfe..437c0e0 100644 --- a/Torch.API/ITorchConfig.cs +++ b/Torch.API/ITorchConfig.cs @@ -34,6 +34,7 @@ namespace Torch string LoginToken { get; set; } UpdateSource UpdateSource { get; set; } List Packages { get; set; } + int RestartSaveTimeout { get; set; } void Save(string path = null); } diff --git a/Torch.Server/TorchConfig.cs b/Torch.Server/TorchConfig.cs index b16a7e9..a848f31 100644 --- a/Torch.Server/TorchConfig.cs +++ b/Torch.Server/TorchConfig.cs @@ -121,6 +121,9 @@ public class TorchConfig : ViewModel, ITorchConfig [Display(Name = "Packages", Description = "Packages to install and use.", GroupName = "Server")] public List Packages { get; set; } = new(); + + [Display(Name = "Restart Save Timeout", Description = "Timeout for save operation on restart in seconds.", GroupName = "Server")] + public int RestartSaveTimeout { get; set; } // for backward compatibility public void Save(string path = null) => Initializer.Instance?.ConfigPersistent?.Save(path); diff --git a/Torch.Server/TorchServer.cs b/Torch.Server/TorchServer.cs index 4626633..2de9e63 100644 --- a/Torch.Server/TorchServer.cs +++ b/Torch.Server/TorchServer.cs @@ -248,7 +248,8 @@ namespace Torch.Server { if (save) { - var saveResult = Save(exclusive: true).Result; + var saveResult = Save(Config.RestartSaveTimeout == 0 ? -1 : Config.RestartSaveTimeout, + exclusive: true).Result; if (saveResult is not (GameSaveResult.Success or GameSaveResult.TimedOut)) { Log.Error("Save failed due to {Reason}. Restart aborted!", saveResult);