Skip to content

Conversation

@flub
Copy link
Contributor

@flub flub commented Oct 31, 2025

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

  • Self-review.
  • Documentation updates following the style guide, if relevant.
  • Tests if relevant.
  • All breaking changes documented.
    • List all breaking changes in the above "Breaking Changes" section.
    • Open an issue or PR on any number0 repos that are affected by this breaking change. Give guidance on how the updates should be handled or do the actual updates themselves. The major ones are:

@flub flub marked this pull request as draft October 31, 2025 17:16
@n0bot n0bot bot added this to iroh Oct 31, 2025
@github-project-automation github-project-automation bot moved this to 🏗 In progress in iroh Oct 31, 2025
@dignifiedquire dignifiedquire added this to the v0.96 milestone Nov 1, 2025
flub added 2 commits November 3, 2025 11:22
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.
@github-actions
Copy link

github-actions bot commented Nov 23, 2025

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

flub added 5 commits November 23, 2025 13:02
- 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.
@flub flub marked this pull request as ready for review November 23, 2025 14:55
@flub flub merged commit 94c150a into feat-multipath Nov 23, 2025
22 of 28 checks passed
@github-project-automation github-project-automation bot moved this from 🏗 In progress to ✅ Done in iroh Nov 23, 2025
@flub flub deleted the feat-multipath-quic-nat branch November 23, 2025 16:35
@dignifiedquire
Copy link
Contributor

🎉🎉🎉🎉

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.
Copy link
Member

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

Labels

None yet

Projects

Status: ✅ Done

Development

Successfully merging this pull request may close these issues.

5 participants