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
[Medium impact] The PR appears safe to merge, with the missing-checksum finding fixed and no new actionable issues found.
|
48d6e6b to
16c2f83
Compare
xezon
left a comment
There was a problem hiding this comment.
The second commit mixes changes with refactors. It would be ideal to move refactors into commit 1. Otherwise looks ok.
Yeah, I can change that. Do you mind if I keep commit 1 as is, and separate commit 2 into a refactor commit and a change commit? |
Do as you see fit. |
…anslateGameMessage'.
…' and some other minor changes.
16c2f83 to
2866e42
Compare
xezon
left a comment
There was a problem hiding this comment.
Pull id needs to be added to commit titles.
2866e42 to
9886bd1
Compare
You want to rebase and merge? In that case it might make more sense to combine the refactor commits into one. |
9886bd1 to
e725373
Compare
|
It makes sense to have 1 commit for refactors and 1 for the change. |
|
I expect to update it sometime in the next 24h. |
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: