Skip to content

Multipath: assign fresh dcids to paths still waiting for one - #519

Open
aswanthk777 wants to merge 1 commit into
Tencent:developfrom
aswanthk777:pr-dcid-fix
Open

Multipath: assign fresh dcids to paths still waiting for one#519
aswanthk777 wants to merge 1 commit into
Tencent:developfrom
aswanthk777:pr-dcid-fix

Conversation

@aswanthk777

Copy link
Copy Markdown

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_established stayed 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

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