From 7b7ccf4128bb9ae8912304e479dee22294ee4fa2 Mon Sep 17 00:00:00 2001 From: tomas Date: Sat, 24 Sep 2022 20:29:02 +0200 Subject: [PATCH] Fix crash in OrderBuffer --- OpenRA.Game/Server/OrderBuffer.cs | 3 +++ OpenRA.Game/Server/Server.cs | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/OpenRA.Game/Server/OrderBuffer.cs b/OpenRA.Game/Server/OrderBuffer.cs index 397a594267..3027a937d5 100644 --- a/OpenRA.Game/Server/OrderBuffer.cs +++ b/OpenRA.Game/Server/OrderBuffer.cs @@ -88,6 +88,9 @@ namespace OpenRA.Server nextUpdate = now + Interval; + if (deltas.IsEmpty) + yield break; + if (deltas.Values.Any(q => q.Count != NumberOfFrames)) yield break; diff --git a/OpenRA.Game/Server/Server.cs b/OpenRA.Game/Server/Server.cs index 9600d080ae..ed44ae4e30 100644 --- a/OpenRA.Game/Server/Server.cs +++ b/OpenRA.Game/Server/Server.cs @@ -1339,7 +1339,6 @@ namespace OpenRA.Server } SyncLobbyInfo(); - State = ServerState.GameStarted; var gameSpeeds = Game.ModData.Manifest.Get(); var gameSpeedName = LobbyInfo.GlobalSettings.OptionOrDefault("gamespeed", gameSpeeds.DefaultSpeed); @@ -1349,6 +1348,8 @@ namespace OpenRA.Server orderBuffer = new OrderBuffer(); orderBuffer.Start(gameSpeed, Conns.Where(c => c.Validated).Select(c => c.PlayerIndex)); + State = ServerState.GameStarted; + if (Type != ServerType.Local) OrderLatency = gameSpeed.OrderLatency;