Repository navigation
SNP: Fix lane select header size for lane IDs >= 8 - #457
Open
jpggvilaca wants to merge 1 commit into
Open
jpggvilaca wants to merge 1 commit into
jpggvilaca wants to merge 1 commit into
Conversation
For lane IDs >= 8, GetLane() computed m_cbHdr from &m_hdr[1], so the lane select header was one byte short and the last byte of the varint lane ID was never copied into the packet. The receiver consumed the following segment header as part of the lane number and closed the connection with "SNP decode unreliable msgnum underflow". Add a lane_many test to suite-quick that sends a message on each of 130 lanes over network loopback. Fixes ValveSoftware#455
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #455. Thanks @tastive for pinpointing the line.
For lane IDs >= 8,
GetLane()computedm_cbHdrfrom&m_hdr[1], so the lane select header was one byte short and the last byte of the varint lane ID was never copied into the packet. The receiver consumed the following segment header as part of the lane number and closed the connection withSNP decode unreliable msgnum underflow. The receiver already matchesSNP_WIRE_FORMAT.md, so only the sender changes, and lanes 0-7 are encoded as before.Added
lane_manytosuite-quick: one reliable message on each of 130 lanes over network loopback (covering 1, 2 and 3 byte lane select headers), checking that each one arrives on the right lane. It fails on master with the 5002 decode error and passes with the fix.suite-quickpasses on Windows 11, MSVC 2026, x86 Debug.I used an AI assistant (Claude) to help me analyze the bug and draft the PR. I built and ran everything myself