Multipath: assign fresh dcids to paths still waiting for one - #519
Open
aswanthk777 wants to merge 1 commit into
Open
Multipath: assign fresh dcids to paths still waiting for one#519aswanthk777 wants to merge 1 commit into
aswanthk777 wants to merge 1 commit into
Conversation
A client typically calls add_path() from the connection-established callback, which fires before the peer's post-handshake NEW_CONNECTION_ID flight has been processed. Such a path gets dcid_seq=None, and the NEW_CONNECTION_ID handler only re-assigned dcids to paths whose dcid was retired — a path waiting for its FIRST dcid was never revisited. Since select_send_path skips dcid-less paths for probing, the path could never send its PATH_CHALLENGE, never validated, and never carried traffic. Fix: when NEW_CONNECTION_ID frames arrive, also assign unused dcids to any path with dcid_seq=None. (cherry picked from commit b7c5114d20ebf9b9ab74cc5f9befd688c5aadd94)
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.
A client typically calls add_path() from the connection-established
callback, which fires before the peer's post-handshake NEW_CONNECTION_ID
flight has been processed. Such a path gets dcid_seq=None, and the
NEW_CONNECTION_ID handler only re-assigned dcids to paths whose dcid was
retired — a path waiting for its FIRST dcid was never revisited. Since
select_send_path skips dcid-less paths for probing, the path could never
send its PATH_CHALLENGE, never validated, and never carried traffic.
Fix: when NEW_CONNECTION_ID frames arrive, also assign unused dcids to
any path with dcid_seq=None.
Found while building a multipath datagram tunnel on TQUIC: a path added from
on_conn_establishedstayed silent forever (no PATH_CHALLENGE ever sent, 0% of traffic) because the callback fires before the peer's NEW_CONNECTION_ID flight is processed. With this fix the path validates as soon as the first NCID arrives.🤖 Generated with Claude Code
https://claude.ai/code/session_01LqZK49rKWmBNsihzCrsbgD