Repository navigation
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
WalkthroughThe changes add a playback-specific logic CRC message. CRC generation, client filtering, game logic dispatch, and recorder culling now handle playback CRC messages separately from other logic CRC messages. ChangesReplay CRC Handling
Priority: ➖ Normal Estimated code review effort: 2 (Simple) | ~12 minutes Change: Bug fix Sequence Diagram(s)sequenceDiagram
participant GameLogic
participant TheCommandList
participant GameLogicDispatch
participant handleCRCMessage
GameLogic->>TheCommandList: Append MSG_LOGIC_CRC_PLAYBACK with CRC
TheCommandList->>GameLogicDispatch: Dispatch playback CRC message
GameLogicDispatch->>handleCRCMessage: Pass CRC with player index -1 and playback enabled
Security Architecture ReviewSecurity architecture risk: 🟡 Moderate · up to The separation improves replay integrity, but default compatibility builds still allow a match participant to send the new replay-only message and repeatedly accumulate memory on receiving clients. Builds enforcing network-only message types block this path. Retained concerns
Security review details
Pre-merge checks ·
|
47aa6e4 to
48d6e6b
Compare
|
48d6e6b to
16c2f83
Compare
This pull request changes the second parameter for
GameMessage::MSG_LOGIC_CRCto a separate type:GameMessage::MSG_LOGIC_CRC_PLAYBACK. The parameter is a boolean to determine if the message was created locally for replay playback.It's wasteful to store this information in a parameter for a message type that's sent across the network and stored in replays, and can be easily replaced with a separate non-network type. The current situation also makes it possible for players to send
truefor playback during multiplayer games, causing replays of the match to report a mismatch when they shouldn't. This wouldn't be noticeable during the live game.Despite the removal of the second message parameter, older clients can still parse newer replays because
GameMessage::getArgumenthas a fallback option that returns 0 (or false) for missing arguments. See the code below.Retail Generals code.
Retail Zero Hour code.
Current code.
TODO: