Restore packet size restriction with 128k limit.
This commit is contained in:
@@ -25,6 +25,7 @@ namespace OpenRA.Server
|
||||
public int ExpectLength = 8;
|
||||
public int Frame = 0;
|
||||
public int MostRecentFrame = 0;
|
||||
public const int MaxOrderLength = 131072;
|
||||
|
||||
/* client data */
|
||||
public int PlayerIndex;
|
||||
@@ -65,7 +66,7 @@ namespace OpenRA.Server
|
||||
if (e.SocketErrorCode == SocketError.WouldBlock) break;
|
||||
|
||||
server.DropClient(this);
|
||||
Log.Write("server", "Dropping client {0} because reading the data failed: {1}", this.PlayerIndex.ToString(), e);
|
||||
Log.Write("server", "Dropping client {0} because reading the data failed: {1}", PlayerIndex, e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -86,6 +87,13 @@ namespace OpenRA.Server
|
||||
ExpectLength = BitConverter.ToInt32(bytes, 0) - 4;
|
||||
Frame = BitConverter.ToInt32(bytes, 4);
|
||||
State = ReceiveState.Data;
|
||||
|
||||
if (ExpectLength < 0 || ExpectLength > MaxOrderLength)
|
||||
{
|
||||
server.DropClient(this);
|
||||
Log.Write("server", "Dropping client {0} for excessive order length = {1}", PlayerIndex, ExpectLength);
|
||||
return;
|
||||
}
|
||||
} break;
|
||||
|
||||
case ReceiveState.Data:
|
||||
|
||||
Reference in New Issue
Block a user