Skip to content

Input Redundancy Serializer does not check for empty snapshots#573

Open
Riordan-DC wants to merge 1 commit intofoxssake:mainfrom
Riordan-DC:redundancy-input-serialization-fix
Open

Input Redundancy Serializer does not check for empty snapshots#573
Riordan-DC wants to merge 1 commit intofoxssake:mainfrom
Riordan-DC:redundancy-input-serialization-fix

Conversation

@Riordan-DC
Copy link
Contributor

Issue: Input Redundancy Serializer does not check for empty snapshots

Input redundancy serializer will send a short history of inputs to the server. When a client connects, if it has yet to generate an input history to send. The serializer sends empty snapshots. The input redundancy decoder on the server doesnt know how to handle empty snapshots and decodes them as normal. This reads garbage memory into the snapshot, most importantly, its tick value. A garbage tick value is often a huge unsigned number. When the server's rollback input history buffer tries to find a place for it, subsequent snapshots (with normal tick numbers) will not be allowed in. The server then stores no input it receives, in therefore cant do rollback, cant send rollback updates, etc.

This PR checks if a snapshot is empty on both ends of the input redundancy serializer and skips or breaks if found.

Criticism: Why don't we just not record empty snapshots. Then we wont have the chance to send an empty snapshot.
Answer: I think the system is designed such that a snapshot is going to be recorded at a tick regardless if anything is inside. A more experienced contributor could help me out here.

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