Skip to content
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
some intermediate stuff
  • Loading branch information
flub committed Nov 20, 2025
commit a93db87f6713ad01f1d07fc4d2ed390f8dbab9a3
4 changes: 3 additions & 1 deletion iroh/src/endpoint.rs
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,9 @@ impl Builder {
self.transport_config
.default_path_max_idle_timeout(Some(PATH_MAX_IDLE_TIMEOUT));
self.transport_config
.max_concurrent_multipath_paths(MAX_MULTIPATH_PATHS);
.max_concurrent_multipath_paths(MAX_MULTIPATH_PATHS + 1);
self.transport_config
.set_max_remote_nat_traversal_addresses(MAX_MULTIPATH_PATHS as u8);

let static_config = StaticConfig {
transport_config: Arc::new(self.transport_config),
Expand Down
2 changes: 1 addition & 1 deletion iroh/src/magicsock.rs
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ pub(crate) const PATH_MAX_IDLE_TIMEOUT: Duration = Duration::from_millis(6500);
/// Maximum number of concurrent QUIC multipath paths per connection.
///
/// Pretty arbitrary and high right now.
pub(crate) const MAX_MULTIPATH_PATHS: u32 = 16;
pub(crate) const MAX_MULTIPATH_PATHS: u32 = 12;

/// Error returned when the endpoint state actor stopped while waiting for a reply.
#[stack_error(add_meta, derive)]
Expand Down
18 changes: 8 additions & 10 deletions iroh/src/magicsock/remote_map/remote_state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -587,13 +587,12 @@ impl RemoteStateActor {
trace!("not holepunching: no client connection");
return;
};
// TODO: these are the local addresses, so this will be very sad.
let Ok(remote_candidates) = conn
.get_remote_nat_traversal_addresses()
.and_then(|addrs| Ok(BTreeSet::from_iter(addrs)))
else {
warn!("boo");
return;
let remote_candidates = match conn.get_remote_nat_traversal_addresses() {
Ok(addrs) => BTreeSet::from_iter(addrs),
Err(err) => {
warn!("failed to get nat candidate addresses: {err:#}");
return;
}
};
// let remote_candidates = BTreeSet::from_iter(conn.get_nat_traversal_addresses());
let local_candidates: BTreeSet<SocketAddr> = self
Expand Down Expand Up @@ -656,9 +655,8 @@ impl RemoteStateActor {
remote_candidates: BTreeSet::from_iter(remote_candidates),
});
}
Err(_) => {
// TODO: log error
warn!("failed to initiate NAT traversal");
Err(err) => {
warn!("failed to initiate NAT traversal {err:#}");
}
}
}
Expand Down
5 changes: 0 additions & 5 deletions iroh/src/magicsock/remote_map/remote_state/path_state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -81,11 +81,6 @@ impl RemotePathState {
self.emit_pending_resolve_requests(result.err());
}

/// Returns an iterator over all paths and their state.
pub(super) fn iter(&self) -> impl Iterator<Item = (&transports::Addr, &PathState)> {
self.paths.iter()
}

/// Returns an iterator over the addresses of all paths.
pub(super) fn addrs(&self) -> impl Iterator<Item = &transports::Addr> {
self.paths.keys()
Expand Down