Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
115 commits
Select commit Hold shift + click to select a range
0c5d837
refactor: introduce an IP transport
dignifiedquire Apr 28, 2025
5a81be0
use more iptransport
dignifiedquire Apr 28, 2025
c4510a0
fixups
dignifiedquire Apr 28, 2025
7b2163c
wip
dignifiedquire Apr 29, 2025
98ac5a0
Merge branch 'main' into refactor-transports
Frando May 4, 2025
25d0997
Merge remote-tracking branch 'origin/main' into refactor-transports
dignifiedquire May 6, 2025
0269959
Merge remote-tracking branch 'origin/main' into refactor-transports
dignifiedquire May 8, 2025
bfa5c57
it compiles again
dignifiedquire May 8, 2025
e7093f9
impl iopoller for relay
dignifiedquire May 8, 2025
8bd0c7c
remove direct reference to magicsock from relay actor
dignifiedquire May 8, 2025
bc44cfc
refactor: move relay actor into relay transport
dignifiedquire May 8, 2025
d812589
basic tests passing again
dignifiedquire May 8, 2025
5b9c67d
simplify wasm and non wasm transport handling
dignifiedquire May 8, 2025
282e798
magicsock: unify send path more
dignifiedquire May 8, 2025
e1ab4f8
push home relay updates into the relay transport
dignifiedquire May 8, 2025
84f73c9
remove custom shutdown from relay transport
dignifiedquire May 8, 2025
900bef4
magicsock: unify stored transports
dignifiedquire May 8, 2025
2537866
watch for home relay changes
dignifiedquire May 8, 2025
874f72b
fix: only publish addr if home relay is set
dignifiedquire May 8, 2025
4083c73
happy clippy
dignifiedquire May 8, 2025
945eac7
wip
dignifiedquire May 8, 2025
a560af8
wip
dignifiedquire May 9, 2025
28db482
fixup
dignifiedquire May 9, 2025
1face6b
a new approach
dignifiedquire May 12, 2025
c7dd80f
compiles
dignifiedquire May 12, 2025
9e3935c
merge addrs
dignifiedquire May 12, 2025
d4fa257
remove enum_dispatch
dignifiedquire May 12, 2025
f025c2a
fix obvious bugs in watchable impls
dignifiedquire May 12, 2025
a2abe8d
more pieces compile
dignifiedquire May 12, 2025
3ddd586
happy clippy
dignifiedquire May 12, 2025
ae00455
Merge remote-tracking branch 'origin/main' into refactor-transports
dignifiedquire May 12, 2025
3c5f862
merge fixes
dignifiedquire May 12, 2025
d9e959c
fixups
dignifiedquire May 12, 2025
4c5224a
wasm fixes
dignifiedquire May 12, 2025
a0e7cf1
remove iptransport duplication
dignifiedquire May 12, 2025
2d2ecde
fix: setup correct stun config
dignifiedquire May 12, 2025
720bacb
fixup: remove futures-lite
dignifiedquire May 12, 2025
0488760
refactor: avoid using custom RecvMeta struct
dignifiedquire May 12, 2025
df3173e
Merge remote-tracking branch 'origin/main' into refactor-transports
dignifiedquire May 12, 2025
a8c5f26
fixup wasm
dignifiedquire May 12, 2025
17009cf
Merge remote-tracking branch 'origin/main' into refactor-transports
dignifiedquire May 12, 2025
ff85d4a
fix ip binding and addr reporting
dignifiedquire May 12, 2025
79f89f6
start writing watchable tests
dignifiedquire May 13, 2025
f9f60be
improve test logic
dignifiedquire May 13, 2025
0141207
fix test
dignifiedquire May 13, 2025
aa0b146
cleanup
dignifiedquire May 13, 2025
450de8a
test and fix joinopt
dignifiedquire May 13, 2025
9a79d13
fix and test merge2
dignifiedquire May 13, 2025
f17ab65
cleanup visibility
dignifiedquire May 13, 2025
df11a4c
more cleanup in tranports
dignifiedquire May 13, 2025
f4d8edd
refactor: simplify IP transport implementation
dignifiedquire May 14, 2025
78587e2
add send metrics for ip transport back
dignifiedquire May 14, 2025
ff29fb8
misc cleanup
dignifiedquire May 14, 2025
e24ed85
fix wasm imports
dignifiedquire May 14, 2025
0d32824
Merge remote-tracking branch 'origin/main' into refactor-transports
dignifiedquire May 14, 2025
a3b6c47
remove dead code
dignifiedquire May 14, 2025
5d3c122
fix docs
dignifiedquire May 14, 2025
2735b59
fix node_addr impl
dignifiedquire May 14, 2025
549a76a
fixups
dignifiedquire May 14, 2025
1c2bebe
fix: only publish if there are addresses
dignifiedquire May 14, 2025
f62cf47
debug: print node info
dignifiedquire May 14, 2025
f0f750a
skip publishing empty data
dignifiedquire May 14, 2025
8b305ac
fix first round of CR
dignifiedquire May 15, 2025
d3a14e6
bring back some comments
dignifiedquire May 15, 2025
9e4019c
Merge remote-tracking branch 'origin/main' into refactor-transports
dignifiedquire May 15, 2025
18ffdef
refactor: switch to external watcher crate
dignifiedquire May 15, 2025
2e64fca
remove joinopt
dignifiedquire May 15, 2025
b225073
first round of CR from flub
dignifiedquire May 19, 2025
9e9a384
bring back randomization in polling
dignifiedquire May 19, 2025
199b8d9
cr: remove comment
dignifiedquire May 19, 2025
3ba6e89
Merge remote-tracking branch 'origin/main' into refactor-transports
dignifiedquire May 19, 2025
e0dbf87
chore: switch to released n0-watcher
dignifiedquire May 19, 2025
aae7d26
one more round of CR
dignifiedquire May 20, 2025
aefc314
Merge remote-tracking branch 'origin/main' into refactor-transports
dignifiedquire May 20, 2025
2ee29c2
fix: use more specific poll_writable
dignifiedquire May 20, 2025
0bf0343
pass destination earlier
dignifiedquire May 20, 2025
161a502
switch to use udpsenders
dignifiedquire May 21, 2025
ef90325
improve relay sending by using the context
dignifiedquire May 21, 2025
7dd3feb
pass through context to ip sending
dignifiedquire May 21, 2025
60a245c
implement try_send
dignifiedquire May 21, 2025
581e845
cleanup
dignifiedquire May 21, 2025
cbb2bc4
refactor: move sending onto the sender
dignifiedquire May 21, 2025
5f7d621
proper context and task tracking using direct senders
dignifiedquire May 21, 2025
2b402b0
fix: ensure certificates are skipped for all probes in testing
dignifiedquire May 22, 2025
91e2a07
fix async send fn
dignifiedquire May 22, 2025
aec022d
update to quinn with buffering
dignifiedquire May 22, 2025
7b48346
send pings earlier again
dignifiedquire May 22, 2025
53506c9
only send non empty pings
dignifiedquire May 22, 2025
78dc81c
refactor: use pollsender in relay
dignifiedquire May 22, 2025
dbf3914
fixup: remove dead code
dignifiedquire May 22, 2025
941f2eb
fix: only do split work after readiness
dignifiedquire May 22, 2025
3750b86
refactor: move `Transports` out of the MagicSock
dignifiedquire May 22, 2025
99bb16f
cleanups
dignifiedquire May 22, 2025
803bead
remove bad comment
dignifiedquire May 22, 2025
2d3c288
update netwatch dep
dignifiedquire May 23, 2025
3b13410
Merge remote-tracking branch 'origin/main' into refactor-transports
dignifiedquire May 27, 2025
416b358
update netwatch
dignifiedquire May 27, 2025
73609e5
apply CR
dignifiedquire May 27, 2025
4d3b3c1
Merge remote-tracking branch 'origin/main' into refactor-transports
dignifiedquire May 27, 2025
1d5e619
fixups after merge
dignifiedquire May 27, 2025
3d1ec63
Merge remote-tracking branch 'origin/main' into refactor-transports
dignifiedquire May 28, 2025
4b51986
Merge remote-tracking branch 'origin/main' into refactor-transports
dignifiedquire Jun 2, 2025
13c65b0
docs fixups
dignifiedquire Jun 2, 2025
05548d0
fixup: remove anyhow usage
dignifiedquire Jun 2, 2025
2b5d392
Merge remote-tracking branch 'origin/main' into refactor-transports
dignifiedquire Jun 3, 2025
193b00f
update n0-watcher
dignifiedquire Jun 3, 2025
10e17b0
Merge remote-tracking branch 'origin/main' into refactor-transports
dignifiedquire Jun 3, 2025
419dc33
Merge remote-tracking branch 'origin/main' into refactor-transports
dignifiedquire Jun 3, 2025
92d678c
Merge remote-tracking branch 'origin/main' into refactor-transports
dignifiedquire Jun 4, 2025
4c37c56
update quinn to merged version
dignifiedquire Jun 4, 2025
d02c534
update n0-snafu
dignifiedquire Jun 4, 2025
d99a4cb
switch to released iroh-quinn
dignifiedquire Jun 5, 2025
c3c828b
cleanup: undo some changes not needed
dignifiedquire Jun 5, 2025
0210a51
update to released netwatch
dignifiedquire Jun 5, 2025
becfce8
Merge remote-tracking branch 'origin/main' into refactor-transports
dignifiedquire Jun 11, 2025
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
80 changes: 58 additions & 22 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion iroh-relay/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ postcard = { version = "1", default-features = false, features = [
"use-std",
"experimental-derive",
] }
quinn = { package = "iroh-quinn", version = "0.13.0", default-features = false, features = ["rustls-ring"] }
quinn = { package = "iroh-quinn", version = "0.14.0", default-features = false, features = ["rustls-ring"] }
quinn-proto = { package = "iroh-quinn-proto", version = "0.13.0" }
rand = "0.8"
reqwest = { version = "0.12", default-features = false, features = [
Expand Down
11 changes: 5 additions & 6 deletions iroh/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@ workspace = true
[dependencies]
anyhow = "1.0.98"
aead = { version = "0.5.2", features = ["bytes", "std"] }
atomic-waker = "1.1.2"
concurrent-queue = "2.5"
backon = { version = "1.4" }
bytes = "1.7"
crypto_box = { version = "0.9.1", features = ["serde", "chacha20"] }
Expand All @@ -44,13 +42,14 @@ iroh-base = { version = "0.35.0", default-features = false, features = ["key", "
iroh-relay = { version = "0.35", path = "../iroh-relay", default-features = false }
n0-future = "0.1.2"
n0-snafu = "0.2.0"
n0-watcher = "0.2"
nested_enum_utils = "0.2.1"
netwatch = { version = "0.5" }
netwatch = { version = "0.6" }
pin-project = "1"
pkarr = { version = "3.7", default-features = false, features = [
"relays",
] }
quinn = { package = "iroh-quinn", version = "0.13.0", default-features = false, features = ["rustls-ring"] }
quinn = { package = "iroh-quinn", version = "0.14.0", default-features = false, features = ["rustls-ring"] }
quinn-proto = { package = "iroh-quinn-proto", version = "0.13.0" }
quinn-udp = { package = "iroh-quinn-udp", version = "0.5.7" }
rand = "0.8"
Expand Down Expand Up @@ -104,13 +103,14 @@ tracing-subscriber = { version = "0.3", features = [
indicatif = { version = "0.17", features = ["tokio"], optional = true }
parse-size = { version = "=1.0.0", optional = true, features = ['std'] } # pinned version to avoid bumping msrv to 1.81


# non-wasm-in-browser dependencies
[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dependencies]
hickory-resolver = "0.25.1"
igd-next = { version = "0.16", features = ["aio_tokio"] }
netdev = { version = "0.31.0" }
portmapper = { version = "0.5.0", default-features = false }
quinn = { package = "iroh-quinn", version = "0.13.0", default-features = false, features = ["runtime-tokio", "rustls-ring"] }
quinn = { package = "iroh-quinn", version = "0.14.0", default-features = false, features = ["runtime-tokio", "rustls-ring"] }
tokio = { version = "1", features = [
"io-util",
"macros",
Expand Down Expand Up @@ -141,7 +141,6 @@ tracing-subscriber = { version = "0.3", features = ["env-filter"] }
[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dev-dependencies]
axum = { version = "0.8" }
clap = { version = "4", features = ["derive"] }
futures-lite = "2.6"
pretty_assertions = "1.4"
rand_chacha = "0.3.1"
tokio = { version = "1", features = [
Expand Down
3 changes: 2 additions & 1 deletion iroh/bench/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ iroh = { path = ".." }
iroh-metrics = "0.34"
n0-future = "0.1.1"
n0-snafu = "0.2.0"
quinn = { package = "iroh-quinn", version = "0.13" }
n0-watcher = "0.2"
quinn = { package = "iroh-quinn", version = "0.14" }
rand = "0.8"
rcgen = "0.13"
rustls = { version = "0.23", default-features = false, features = ["ring"] }
Expand Down
4 changes: 2 additions & 2 deletions iroh/bench/src/iroh.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ use std::{
use bytes::Bytes;
use iroh::{
endpoint::{Connection, ConnectionError, RecvStream, SendStream, TransportConfig},
watcher::Watcher as _,
Endpoint, NodeAddr, RelayMode, RelayUrl,
};
use n0_snafu::{Result, ResultExt};
use n0_watcher::Watcher as _;
use tracing::{trace, warn};

use crate::{
Expand Down Expand Up @@ -54,7 +54,7 @@ pub fn server_endpoint(
}

let addr = ep.bound_sockets();
let addr = SocketAddr::new("127.0.0.1".parse().unwrap(), addr.0.port());
let addr = SocketAddr::new("127.0.0.1".parse().unwrap(), addr[0].port());
let mut addr = NodeAddr::new(ep.node_id()).with_direct_addresses([addr]);
if let Some(relay_url) = relay_url {
addr = addr.with_relay_url(relay_url.clone());
Expand Down
3 changes: 2 additions & 1 deletion iroh/examples/0rtt.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ use std::{env, future::Future, str::FromStr, time::Instant};
use clap::Parser;
use iroh::{
endpoint::{Connecting, Connection},
watcher::Watcher,
SecretKey,
};
use iroh_base::ticket::NodeTicket;
use n0_future::{future, StreamExt};
use n0_snafu::ResultExt;
use n0_watcher::Watcher;
use rand::thread_rng;
use tracing::{info, trace};

Expand Down Expand Up @@ -150,6 +150,7 @@ async fn accept(_args: Args) -> n0_snafu::Result<()> {
println!("Listening on: {:?}", addr);
println!("Node ID: {:?}", addr.node_id);
println!("Ticket: {}", NodeTicket::from(addr));

let accept = async move {
while let Some(incoming) = endpoint.accept().await {
tokio::spawn(async move {
Expand Down
3 changes: 2 additions & 1 deletion iroh/examples/connect-unreliable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@
use std::net::SocketAddr;

use clap::Parser;
use iroh::{watcher::Watcher as _, Endpoint, NodeAddr, RelayMode, RelayUrl, SecretKey};
use iroh::{Endpoint, NodeAddr, RelayMode, RelayUrl, SecretKey};
use n0_snafu::ResultExt;
use n0_watcher::Watcher as _;
use tracing::info;

// An example ALPN that we are using to communicate over the `Endpoint`
Expand Down
5 changes: 4 additions & 1 deletion iroh/examples/connect.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@
use std::net::SocketAddr;

use clap::Parser;
use iroh::{watcher::Watcher as _, Endpoint, NodeAddr, RelayMode, RelayUrl, SecretKey};
use iroh::{Endpoint, NodeAddr, RelayMode, RelayUrl, SecretKey};
use n0_snafu::{Result, ResultExt};
use n0_watcher::Watcher as _;
use tracing::info;

// An example ALPN that we are using to communicate over the `Endpoint`
Expand Down Expand Up @@ -67,6 +68,8 @@ async fn main() -> Result<()> {
.home_relay()
.get()
.unwrap()
.first()
.cloned()
.expect("should be connected to a relay server, try calling `endpoint.local_endpoints()` or `endpoint.connect()` first, to ensure the endpoint has actually attempted a connection before checking for the connected relay server");
println!("node relay server url: {relay_url}\n");
// Build a `NodeAddr` from the node_id, relay url, and UDP addresses.
Expand Down
3 changes: 2 additions & 1 deletion iroh/examples/echo-no-router.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@
//!
//! cargo run --example echo-no-router --features=examples

use iroh::{watcher::Watcher as _, Endpoint, NodeAddr};
use iroh::{Endpoint, NodeAddr};
use n0_snafu::{Error, Result, ResultExt};
use n0_watcher::Watcher as _;

/// Each protocol is identified by its ALPN string.
///
Expand Down
2 changes: 1 addition & 1 deletion iroh/examples/echo.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@
use iroh::{
endpoint::Connection,
protocol::{AcceptError, ProtocolHandler, Router},
watcher::Watcher as _,
Endpoint, NodeAddr,
};
use n0_snafu::{Result, ResultExt};
use n0_watcher::Watcher as _;

/// Each protocol is identified by its ALPN string.
///
Expand Down
3 changes: 2 additions & 1 deletion iroh/examples/listen-unreliable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@
//! This example uses the default relay servers to attempt to holepunch, and will use that relay server to relay packets if the two devices cannot establish a direct UDP connection.
//! run this example from the project root:
//! $ cargo run --example listen-unreliable
use iroh::{watcher::Watcher as _, Endpoint, RelayMode, SecretKey};
use iroh::{Endpoint, RelayMode, SecretKey};
use n0_snafu::{Error, Result, ResultExt};
use n0_watcher::Watcher as _;
use tracing::{info, warn};

// An example ALPN that we are using to communicate over the `Endpoint`
Expand Down
3 changes: 2 additions & 1 deletion iroh/examples/listen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@
//! $ cargo run --example listen
use std::time::Duration;

use iroh::{endpoint::ConnectionError, watcher::Watcher as _, Endpoint, RelayMode, SecretKey};
use iroh::{endpoint::ConnectionError, Endpoint, RelayMode, SecretKey};
use n0_snafu::ResultExt;
use n0_watcher::Watcher as _;
use tracing::{debug, info, warn};

// An example ALPN that we are using to communicate over the `Endpoint`
Expand Down
3 changes: 2 additions & 1 deletion iroh/examples/transfer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ use iroh::{
},
dns::{DnsResolver, N0_DNS_NODE_ORIGIN_PROD, N0_DNS_NODE_ORIGIN_STAGING},
endpoint::ConnectionError,
watcher::Watcher as _,
Endpoint, NodeAddr, NodeId, RelayMap, RelayMode, RelayUrl, SecretKey,
};
use iroh_base::ticket::NodeTicket;
use n0_future::task::AbortOnDropHandle;
use n0_snafu::{Result, ResultExt};
use n0_watcher::Watcher as _;
use tokio_stream::StreamExt;
use tracing::{info, warn};
use url::Url;
Expand Down Expand Up @@ -253,6 +253,7 @@ impl EndpointArgs {
let relay_url = endpoint
.home_relay()
.get()?
.pop()
.context("Failed to resolve our home relay")?;
println!("Our home relay server:\n\t{relay_url}");
}
Expand Down
Loading
Loading