Conversation
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 silent first address previously consumed the full connect timeout before qsh tried a reachable address. Start a second attempt after 250 ms, interleave IPv6/IPv4 addresses, and keep at most two application connection attempts active. Each retains its full configured timeout. Failed attempts allow the next address to start immediately; observed host-key mismatches remain fatal.
Use the same bounded race for anonymous first-contact probes and authenticated pinned connections. Each probe owns fresh verifier state. Cancelling losers aborts and awaits their application tasks, dropping their independent connection/endpoint handles; Quinn retains its normal transport draining behavior.
Stacked on #7, following #3 and CI prerequisite #8.
Validation: full Ubuntu CI passed on 672b9e9 (run 34017696676), including rustfmt, pedantic clippy, stable/MSRV tests, root end-to-end tests, workflow/MSRV checks and dependency audit. Regression tests cover a real silent UDP address before a mandatory-mTLS server for both first contact and pinned connection, cancellation of a stalled loser, fatal-key-error short circuit, and the concurrency bound. Confidentiality, changed-key and refusal regressions continue to pass. Independent read-only review found no concrete bypass or regression.