-
Notifications
You must be signed in to change notification settings - Fork 323
Switch to QUIC-NAT-Traversal instead of DISCO #3595
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
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
I don't want to remove the metrics plumbing, but it is currently unused. So emit a single metric for now. Need to do a proper metrics review later, we need more metrics than this.
Turns out we don't do anything with those. We only use this to decide to check if we need to holepunch again. This calls trigger_holepunching for every connection event which will wake it up too much, because we only really need to do it for the connection we are using to holepunch. But the state tracking is easier like this and the cost probably not too high.
it's something, if not much
not sure how bad or good this is yet, but it compiles
merge feat-multipath
|
Documentation for this PR has been generated and is available at: https://n0-computer.github.io/iroh/pr/3595/docs/iroh/ Last updated: 2025-11-23T15:33:18Z |
- Only close paths if we're the client. This stops the server from selecting a different path (because it might not yet know about all paths) and accidentally closing all paths. The client will close these paths anyway. - Select the path when a path gets closed, the remote might be closing our selected path. This also solves the need to run select path on a schedule or some other horrible hack.
Contributor
|
🎉🎉🎉🎉 |
matheus23
reviewed
Nov 25, 2025
Comment on lines
-1023
to
-1025
| // TODO: Need to handle this on a timer as well probably. In .select_path() we open new | ||
| // paths and immediately call this. But the new paths are probably not yet open on | ||
| // all connections. |
Member
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So, I guess you realized we don't need to handle this TODO @flub?
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.
Description
This switches from the old DISCO to the so-new-it-doesnt-exit-yet QUIC
NAT Traversal.
Breaking Changes
Nothing visible? Maybe?
Notes & open questions
The QUIC NAT Traversal API doesn't exist yet, so this won't even build
on any machine that's not mine. I've locally patched in the dummy
methods that I use.
Change checklist
quic-rpciroh-gossipiroh-blobsdumbpipesendme