Skip to content

SNP: Fix lane select header size for lane IDs >= 8 - #457

Open
jpggvilaca wants to merge 1 commit into
ValveSoftware:masterfrom
jpggvilaca:fix-lane-select-header-size
Open

jpggvilaca wants to merge 1 commit into
ValveSoftware:masterfrom
jpggvilaca:fix-lane-select-header-size

Conversation

@jpggvilaca

@jpggvilaca jpggvilaca commented Oct 23, 2026 •

Copy link
Copy Markdown

Fixes #455. Thanks @tastive for pinpointing the line.

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. The receiver already matches SNP_WIRE_FORMAT.md, so only the sender changes, and lanes 0-7 are encoded as before.

Added lane_many to suite-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-quick passes 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

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
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.

ISteamNetworkingSockets: Trying to use over 8 network lanes/channels fails

1 participant