diff --git a/OpenRA.Game/Server/Server.cs b/OpenRA.Game/Server/Server.cs index 154fa0ea31..19886d1207 100644 --- a/OpenRA.Game/Server/Server.cs +++ b/OpenRA.Game/Server/Server.cs @@ -660,16 +660,26 @@ namespace OpenRA.Server } } + byte[] CreateFrame(int client, int frame, byte[] data) + { + var ms = new MemoryStream(data.Length + 12); + ms.WriteArray(BitConverter.GetBytes(data.Length + 4)); + ms.WriteArray(BitConverter.GetBytes(client)); + ms.WriteArray(BitConverter.GetBytes(frame)); + ms.WriteArray(data); + return ms.ToArray(); + } + void DispatchOrdersToClient(Connection c, int client, int frame, byte[] data) + { + DispatchFrameToClient(c, client, CreateFrame(client, frame, data)); + } + + void DispatchFrameToClient(Connection c, int client, byte[] frameData) { try { - var ms = new MemoryStream(data.Length + 12); - ms.WriteArray(BitConverter.GetBytes(data.Length + 4)); - ms.WriteArray(BitConverter.GetBytes(client)); - ms.WriteArray(BitConverter.GetBytes(frame)); - ms.WriteArray(data); - SendData(c.Socket, ms.ToArray()); + SendData(c.Socket, frameData); } catch (Exception e) { @@ -777,8 +787,9 @@ namespace OpenRA.Server public void DispatchOrdersToClients(Connection conn, int frame, byte[] data) { var from = conn != null ? conn.PlayerIndex : 0; + var frameData = CreateFrame(from, frame, data); foreach (var c in Conns.Except(conn).ToList()) - DispatchOrdersToClient(c, from, frame, data); + DispatchFrameToClient(c, from, frameData); if (recorder != null) {