Repository navigation
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Local qualification on signed commit |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ba747cb3c9
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if packets.ActivePath() == Direct { | ||
| next = ConnectivityDirect | ||
| next, lastDirect = ConnectivityDirect, now |
There was a problem hiding this comment.
Base the restart timeout on direct-path probe health
When both relays are unavailable and direct packet probes stop succeeding while ICE consent still succeeds, Endpoint.ActivePath() can remain Direct: Endpoint.chooseLocked() only updates active when it finds a live path and leaves the previous selection unchanged otherwise. This branch therefore continually refreshes lastDirect despite the failed probes, preventing the new restart timeout from firing. The retained application connection can then reach its QUIC idle timeout instead of attempting recovery. Check the direct path's current probe health rather than treating its selected index as proof of connectivity.
Useful? React with 👍 / 👎.
|
Follow-up |
|
superseded by the replacement cutover tracked in #499 (replacement stack #491). closing this original PR at the author's request so only the replacement review remains active. the original branch, commits, reviews and failure evidence are preserved; no branch is deleted. outstanding integration and validation remain tracked in the replacement, not waived by this closure. |
What
Recover direct UDP after a failed ICE setup or lost path while keeping the existing native connection and its application streams on relay delivery.
Stacked on #487. The connector starts each attempt; the publisher replaces only its connectivity agent. The prepared pair, relay-attested source, serving deadline, application admission, and target socket remain owned by the existing session.
Why
One successful ICE negotiation is not enough for a long-lived native connection. An unreachable first candidate set or a changed UDP address must not leave direct delivery permanently unavailable, and retrying must not create a second application session or add serving time.
Changes