diff --git a/Cargo.lock b/Cargo.lock index c36480b9a..afa24c5fc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1838,6 +1838,15 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "document-features" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef5282ad69563b5fc40319526ba27e0e7363d552a896f0297d54f767717f9b95" +dependencies = [ + "litrs", +] + [[package]] name = "dsa" version = "0.6.3" @@ -3321,9 +3330,9 @@ dependencies = [ [[package]] name = "iroh-base" -version = "0.17.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1be0b442ed44d20905cf77c673169906c883e05c829e3fb303b131e925139fc" +checksum = "3250b5f701f733c73bd936b200ee95b95b0efc226a56ad2aab73f58a6b8e0541" dependencies = [ "aead", "anyhow", @@ -3362,15 +3371,17 @@ dependencies = [ [[package]] name = "iroh-gossip" -version = "0.17.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "857aa77a0b29283edf99224bd12cd739684c5873e639b85adb38b8d1d777162d" +checksum = "3287dd543a4d12d6d2410fd2833cde5a497e01176f7e85c22b6224813fc40885" dependencies = [ "anyhow", "bytes", "derive_more 1.0.0-beta.6", "ed25519-dalek 2.1.1", + "flume", "futures-lite 2.3.0", + "futures-util", "genawaiter", "indexmap", "iroh-base", @@ -3388,9 +3399,9 @@ dependencies = [ [[package]] name = "iroh-metrics" -version = "0.17.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd54b9cf342b2618efc8d3ff6cdcd083fa5a2cf6cc78bb473bd32e228eabb40e" +checksum = "5c53025ea97928ae0cfa032c795c66bfcd6adb00ef7083812c4f4f84d047a239" dependencies = [ "anyhow", "erased_set", @@ -3409,9 +3420,9 @@ dependencies = [ [[package]] name = "iroh-net" -version = "0.17.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a744000e6c5704479eeb4751eb23b9b8e7e56a0fc484beb8831694fc93e378f" +checksum = "e3b4857dd736872da1c02d3ad8e4e595be55c011480affffda92d922654d034d" dependencies = [ "aead", "anyhow", @@ -3473,8 +3484,11 @@ dependencies = [ "tokio", "tokio-rustls 0.24.1", "tokio-rustls-acme", + "tokio-tungstenite", + "tokio-tungstenite-wasm", "tokio-util", "tracing", + "tungstenite", "url", "watchable", "webpki-roots 0.25.4", @@ -3685,6 +3699,12 @@ version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +[[package]] +name = "litrs" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" + [[package]] name = "lock_api" version = "0.4.11" @@ -3701,6 +3721,12 @@ version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +[[package]] +name = "lru" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" + [[package]] name = "lru-cache" version = "0.1.2" @@ -3838,9 +3864,9 @@ dependencies = [ [[package]] name = "netdev" -version = "0.25.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb353f5a5a852d5cc779c1c80bec0bd14a696ef832f3a761cb10091802c37109" +checksum = "e6b7a18d9c482b774500c660991da545bac1259fe4dfd40981870e5832aedffc" dependencies = [ "dlopen2 0.5.0", "libc", @@ -3850,7 +3876,7 @@ dependencies = [ "netlink-sys", "once_cell", "system-configuration 0.6.0", - "windows 0.54.0", + "windows-sys 0.52.0", ] [[package]] @@ -4566,18 +4592,25 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkarr" -version = "1.1.5" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "242ae92dfb9d2ba3aaa9caf4723e72043bc50729ad05a763771771ba03196ffb" +checksum = "89f9e12544b00f5561253bbd3cb72a85ff3bc398483dc1bf82bdf095c774136b" dependencies = [ "bytes", + "document-features", "ed25519-dalek 2.1.1", - "rand 0.8.5", - "reqwest 0.11.27", + "flume", + "futures", + "js-sys", + "lru", "self_cell", "simple-dns", "thiserror", - "url", + "tracing", + "ureq", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", "z32", ] @@ -5576,6 +5609,21 @@ dependencies = [ "zeroize", ] +[[package]] +name = "rustls" +version = "0.23.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05cff451f60db80f490f3c182b77c35260baace73209e9cdbbe526bfe3a4d402" +dependencies = [ + "log", + "once_cell", + "ring 0.17.8", + "rustls-pki-types", + "rustls-webpki 0.102.4", + "subtle", + "zeroize", +] + [[package]] name = "rustls-native-certs" version = "0.6.3" @@ -6719,6 +6767,24 @@ dependencies = [ "tungstenite", ] +[[package]] +name = "tokio-tungstenite-wasm" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e57a65894797a018b28345fa298a00c450a574aa9671e50b18218a6292a55ac" +dependencies = [ + "futures-channel", + "futures-util", + "http 1.1.0", + "httparse", + "js-sys", + "thiserror", + "tokio", + "tokio-tungstenite", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "tokio-util" version = "0.7.11" @@ -7038,6 +7104,21 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +[[package]] +name = "ureq" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72139d247e5f97a3eff96229a7ae85ead5328a39efe76f8bf5a06313d505b6ea" +dependencies = [ + "base64 0.22.1", + "log", + "once_cell", + "rustls 0.23.10", + "rustls-pki-types", + "url", + "webpki-roots 0.26.1", +] + [[package]] name = "url" version = "2.5.2" @@ -7331,16 +7412,6 @@ dependencies = [ "windows-targets 0.52.5", ] -[[package]] -name = "windows" -version = "0.54.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" -dependencies = [ - "windows-core 0.54.0", - "windows-targets 0.52.5", -] - [[package]] name = "windows-core" version = "0.51.1" @@ -7359,16 +7430,6 @@ dependencies = [ "windows-targets 0.52.5", ] -[[package]] -name = "windows-core" -version = "0.54.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" -dependencies = [ - "windows-result", - "windows-targets 0.52.5", -] - [[package]] name = "windows-implement" version = "0.52.0" @@ -7391,15 +7452,6 @@ dependencies = [ "syn 2.0.68", ] -[[package]] -name = "windows-result" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "749f0da9cc72d82e600d8d2e44cadd0b9eedb9038f71a1c58556ac1c5791813b" -dependencies = [ - "windows-targets 0.52.5", -] - [[package]] name = "windows-sys" version = "0.48.0" diff --git a/Cargo.toml b/Cargo.toml index a7eeb000c..8f1b1f168 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -61,8 +61,8 @@ hickory-resolver = "0.24" humansize = "2" image = { version = "0.25.1", default-features=false, features = ["gif", "jpeg", "ico", "png", "pnm", "webp", "bmp"] } iroh_old = { version = "0.4.2", default-features = false, package = "iroh"} -iroh-net = "0.17.0" -iroh-gossip = { version = "0.17.0", features = ["net"] } +iroh-net = "0.20.0" +iroh-gossip = { version = "0.20.0", features = ["net"] } quinn = "0.10.0" kamadak-exif = "0.5.3" lettre_email = { git = "https://github.com/deltachat/lettre", branch = "master" } diff --git a/deny.toml b/deny.toml index 54ad26359..51bade197 100644 --- a/deny.toml +++ b/deny.toml @@ -78,6 +78,7 @@ skip = [ { name = "ring", version = "0.16.20" }, { name = "rustls-pemfile", version = "1.0.4" }, { name = "rustls", version = "0.21.11" }, + { name = "rustls", version = "0.22.4" }, { name = "rustls-webpki", version = "0.101.7" }, { name = "sec1", version = "0.3.0" }, { name = "sha2", version = "<0.10" }, diff --git a/src/peer_channels.rs b/src/peer_channels.rs index 5ca3e0bcf..d79381e5b 100644 --- a/src/peer_channels.rs +++ b/src/peer_channels.rs @@ -183,7 +183,7 @@ impl Iroh { /// Get the iroh [NodeAddr] without direct IP addresses. pub(crate) async fn get_node_addr(&self) -> Result { - let mut addr = self.endpoint.my_addr().await?; + let mut addr = self.endpoint.node_addr().await?; addr.info.direct_addresses = BTreeSet::new(); Ok(addr) } @@ -246,7 +246,7 @@ impl Context { .await?; // create gossip - let my_addr = endpoint.my_addr().await?; + let my_addr = endpoint.node_addr().await?; let gossip = Gossip::from_endpoint(endpoint.clone(), Default::default(), &my_addr.info); // spawn endpoint loop that forwards incoming connections to the gossiper @@ -440,11 +440,11 @@ async fn handle_connection( let conn = conn.await?; let peer_id = iroh_net::endpoint::get_remote_node_id(&conn)?; - match alpn.as_bytes() { + match alpn.as_slice() { GOSSIP_ALPN => gossip .handle_connection(conn) .await - .context(format!("Connection to {peer_id} with ALPN {alpn} failed"))?, + .context(format!("Gossip connection to {peer_id} failed"))?, _ => warn!( context, "Ignoring connection from {peer_id}: unsupported ALPN protocol"