Skip to content

Enforce server command invariants more in the client#1955

Open
slipher wants to merge 2 commits intoDaemonEngine:masterfrom
slipher:servercommands
Open

Enforce server command invariants more in the client#1955
slipher wants to merge 2 commits intoDaemonEngine:masterfrom
slipher:servercommands

Conversation

@slipher
Copy link
Copy Markdown
Member

@slipher slipher commented Apr 20, 2026

The server reliable commands are expected to arrive in order and are re-sent if packets are dropped. Do a bit more checking on the client side that the protocol is observed.

I tested this along with #1954 by playing in some online games and replaying demos.

slipher added 2 commits April 20, 2026 15:18
Have the client drop the connection in these cases:
- A gamestate that decreases the sequence number. This should be
  impossible because the netchan guarantees that packets can't be
  reordered, although they may be dropped.
- A server command which a sequence number higher than the next one.
  This should be impossible because the server re-sends all
  unacknowledged commands together each time. If the number jumped by
  more than one the client would end up re-executing old garbage from
  the buffer.
A special case to allow demos to request bad command ranges is not
needed. The gamestate generated when starting the demo sets the
serverCommandSequence number appropriately, so the demo replay will be
able to request the correct range.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant