Add a Order.SyncHashOrderLength const

This commit is contained in:
abcdefg30
2020-10-11 20:22:37 +02:00
committed by abcdefg30
parent 8d5ed65feb
commit 1861174d38
7 changed files with 9 additions and 6 deletions

View File

@@ -188,7 +188,7 @@ namespace OpenRA.Network
public void DispatchOrders(Connection conn, int frame, byte[] data) public void DispatchOrders(Connection conn, int frame, byte[] data)
{ {
// Sync packet - we only care about the last value // Sync packet - we only care about the last value
if (data.Length > 0 && data[0] == (byte)OrderType.SyncHash && frame > LastSyncFrame) if (data.Length == Order.SyncHashOrderLength && data[0] == (byte)OrderType.SyncHash && frame > LastSyncFrame)
{ {
LastSyncFrame = frame; LastSyncFrame = frame;
lastSyncPacket = data; lastSyncPacket = data;

View File

@@ -49,6 +49,9 @@ namespace OpenRA
public sealed class Order public sealed class Order
{ {
// Length of orders with type OrderType.SyncHash
public const int SyncHashOrderLength = 13;
public readonly string OrderString; public readonly string OrderString;
public readonly Actor Subject; public readonly Actor Subject;
public readonly bool Queued; public readonly bool Queued;

View File

@@ -33,7 +33,7 @@ namespace OpenRA.Network
public static byte[] SerializeSync(int sync, ulong defeatState) public static byte[] SerializeSync(int sync, ulong defeatState)
{ {
var ms = new MemoryStream(1 + 4 + 8); var ms = new MemoryStream(Order.SyncHashOrderLength);
using (var writer = new BinaryWriter(ms)) using (var writer = new BinaryWriter(ms))
{ {
writer.Write((byte)OrderType.SyncHash); writer.Write((byte)OrderType.SyncHash);

View File

@@ -123,7 +123,7 @@ namespace OpenRA.Network
var frame = BitConverter.ToInt32(packet, 0); var frame = BitConverter.ToInt32(packet, 0);
if (packet.Length == 5 && packet[4] == (byte)OrderType.Disconnect) if (packet.Length == 5 && packet[4] == (byte)OrderType.Disconnect)
frameData.ClientQuit(clientId, frame); frameData.ClientQuit(clientId, frame);
else if (packet.Length == 4 + 1 + 4 + 8 && packet[4] == (byte)OrderType.SyncHash) else if (packet.Length == 4 + Order.SyncHashOrderLength && packet[4] == (byte)OrderType.SyncHash)
CheckSync(packet); CheckSync(packet);
else if (frame == 0) else if (frame == 0)
immediatePackets.Add((clientId, packet)); immediatePackets.Add((clientId, packet));

View File

@@ -74,7 +74,7 @@ namespace OpenRA.Network
if (packet.Length == 5 && packet[4] == (byte)OrderType.Disconnect) if (packet.Length == 5 && packet[4] == (byte)OrderType.Disconnect)
continue; // disconnect continue; // disconnect
else if (packet.Length >= 5 && packet[4] == (byte)OrderType.SyncHash) else if (packet.Length == 4 + Order.SyncHashOrderLength && packet[4] == (byte)OrderType.SyncHash)
continue; // sync continue; // sync
else if (frame == 0) else if (frame == 0)
{ {

View File

@@ -28,7 +28,7 @@ namespace OpenRA.Network
{ {
if (data.Length == 5 && data[4] == (byte)OrderType.Disconnect) if (data.Length == 5 && data[4] == (byte)OrderType.Disconnect)
return false; return false;
if (data.Length >= 5 && data[4] == (byte)OrderType.SyncHash) if (data.Length == 4 + Order.SyncHashOrderLength && data[4] == (byte)OrderType.SyncHash)
return false; return false;
var frame = BitConverter.ToInt32(data, 0); var frame = BitConverter.ToInt32(data, 0);

View File

@@ -784,7 +784,7 @@ namespace OpenRA.Server
{ {
recorder.ReceiveFrame(from, frame, data); recorder.ReceiveFrame(from, frame, data);
if (data.Length == 1 + 4 + 8 && data[0] == (byte)OrderType.SyncHash) if (data.Length == Order.SyncHashOrderLength && data[0] == (byte)OrderType.SyncHash)
HandleSyncOrder(frame, data); HandleSyncOrder(frame, data);
} }
} }