diff --git a/Cargo.lock b/Cargo.lock index 661f520e..3d2862e8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -24,7 +24,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac8202ab55fcbf46ca829833f347a82a2a4ce0596f0304ac322c2d100030cd56" dependencies = [ "bytes", - "crypto-common 0.2.0-rc.4", + "crypto-common", "inout", ] @@ -150,9 +150,9 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "asn1-rs" -version = "0.6.2" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048" +checksum = "56624a96882bb8c26d61312ae18cb45868e5a9992ea73c58e45c3101e56a1e60" dependencies = [ "asn1-rs-derive", "asn1-rs-impl", @@ -160,15 +160,15 @@ dependencies = [ "nom", "num-traits", "rusticata-macros", - "thiserror 1.0.69", + "thiserror 2.0.12", "time", ] [[package]] name = "asn1-rs-derive" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" +checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" dependencies = [ "proc-macro2", "quote", @@ -430,15 +430,6 @@ dependencies = [ "constant_time_eq", ] -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - [[package]] name = "block-buffer" version = "0.11.0-rc.5" @@ -449,12 +440,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "bounded-integer" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "102dbef1187b1893e6dfe05a774e79fd52265f49f214f6879c8ff49f52c8188b" - [[package]] name = "btparse" version = "0.2.0" @@ -564,7 +549,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -573,8 +558,8 @@ version = "0.5.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e12a13eb01ded5d32ee9658d94f553a19e804204f2dc811df69ab4d9e0cb8c7" dependencies = [ - "block-buffer 0.11.0-rc.5", - "crypto-common 0.2.0-rc.4", + "block-buffer", + "crypto-common", "inout", "zeroize", ] @@ -721,21 +706,6 @@ dependencies = [ "libc", ] -[[package]] -name = "crc" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" -dependencies = [ - "crc-catalog", -] - -[[package]] -name = "crc-catalog" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" - [[package]] name = "critical-section" version = "1.2.0" @@ -766,16 +736,6 @@ version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - [[package]] name = "crypto-common" version = "0.2.0-rc.4" @@ -827,7 +787,7 @@ dependencies = [ "cfg-if", "cpufeatures", "curve25519-dalek-derive", - "digest 0.11.0-rc.3", + "digest", "fiat-crypto", "rand_core 0.9.3", "rustc_version", @@ -874,16 +834,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9d8dd2f26c86b27a2a8ea2767ec7f9df7a89516e4794e54ac01ee618dda3aa4" dependencies = [ "const-oid", - "der_derive", "pem-rfc7468", "zeroize", ] [[package]] name = "der-parser" -version = "9.0.0" +version = "10.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553" +checksum = "07da5016415d5a3c4dd39b11ed26f915f52fc4e0dc197d87908bc916e51bc1a6" dependencies = [ "asn1-rs", "displaydoc", @@ -893,17 +852,6 @@ dependencies = [ "rusticata-macros", ] -[[package]] -name = "der_derive" -version = "0.8.0-rc.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be645fee2afe89d293b96c19e4456e6ac69520fc9c6b8a58298550138e361ffe" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.104", -] - [[package]] name = "deranged" version = "0.4.0" @@ -973,25 +921,15 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab03c107fafeb3ee9f5925686dbb7a73bc76e3932abb0d2b365cb64b169cf04c" -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer 0.10.4", - "crypto-common 0.1.6", - "subtle", -] - [[package]] name = "digest" version = "0.11.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dac89f8a64533a9b0eaa73a68e424db0fb1fd6271c74cc0125336a05f090568d" dependencies = [ - "block-buffer 0.11.0-rc.5", - "crypto-common 0.2.0-rc.4", + "block-buffer", + "const-oid", + "crypto-common", ] [[package]] @@ -1052,7 +990,7 @@ dependencies = [ "ed25519", "rand_core 0.9.3", "serde", - "sha2 0.11.0-rc.2", + "sha2", "signature", "subtle", "zeroize", @@ -1082,26 +1020,6 @@ dependencies = [ "syn 2.0.104", ] -[[package]] -name = "enumflags2" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" -dependencies = [ - "enumflags2_derive", -] - -[[package]] -name = "enumflags2_derive" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.104", -] - [[package]] name = "equivalent" version = "1.0.2" @@ -1139,12 +1057,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "fallible-iterator" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" - [[package]] name = "fastrand" version = "2.3.0" @@ -1296,12 +1208,6 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" -[[package]] -name = "futures-timer" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" - [[package]] name = "futures-util" version = "0.3.31" @@ -1362,17 +1268,7 @@ dependencies = [ "libc", "log", "rustversion", - "windows", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", + "windows 0.61.3", ] [[package]] @@ -1408,12 +1304,6 @@ version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" -[[package]] -name = "glob" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" - [[package]] name = "gloo-timers" version = "0.3.0" @@ -1426,29 +1316,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "governor" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444405bbb1a762387aa22dd569429533b54a1d8759d35d3b64cb39b0293eaa19" -dependencies = [ - "cfg-if", - "dashmap", - "futures-sink", - "futures-timer", - "futures-util", - "getrandom 0.3.3", - "hashbrown 0.15.4", - "nonzero_ext", - "parking_lot", - "portable-atomic", - "quanta", - "rand 0.9.2", - "smallvec", - "spinning_top", - "web-time", -] - [[package]] name = "h2" version = "0.4.11" @@ -1573,37 +1440,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "hmac-sha1" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b05da5b9e5d4720bfb691eebb2b9d42da3570745da71eac8a1f5bb7e59aab88" -dependencies = [ - "hmac", - "sha1", -] - -[[package]] -name = "hmac-sha256" -version = "1.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad6880c8d4a9ebf39c6e8b77007ce223f646a4d21ce29d99f70cb16420545425" - -[[package]] -name = "hostname-validator" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f558a64ac9af88b5ba400d99b579451af0d39c6d360980045b91aac966d705e2" - [[package]] name = "http" version = "1.3.1" @@ -1695,7 +1531,7 @@ dependencies = [ "tokio", "tokio-rustls", "tower-service", - "webpki-roots 1.0.2", + "webpki-roots", ] [[package]] @@ -1734,7 +1570,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core", + "windows-core 0.61.2", ] [[package]] @@ -1955,9 +1791,9 @@ dependencies = [ [[package]] name = "iroh" -version = "0.93.0" +version = "0.94.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50369f3db3f3fbc2cc14fc1baab2f3ee16e0abd89eca0b814258d02a6a13040c" +checksum = "b9428cef1eafd2eac584269986d1949e693877ac12065b401dfde69f664b07ac" dependencies = [ "aead", "axum", @@ -1966,10 +1802,8 @@ dependencies = [ "cfg_aliases", "crypto_box", "data-encoding", - "der", "derive_more 2.0.1", "ed25519-dalek", - "futures-buffered", "futures-util", "getrandom 0.3.3", "hickory-resolver", @@ -1982,11 +1816,11 @@ dependencies = [ "iroh-quinn-proto", "iroh-quinn-udp", "iroh-relay", - "n0-future 0.1.3", + "n0-future", "n0-snafu", "n0-watcher", - "nested_enum_utils 0.2.2", - "netdev 0.36.0", + "nested_enum_utils", + "netdev", "netwatch", "pin-project", "pkarr", @@ -1994,16 +1828,14 @@ dependencies = [ "portmapper", "rand 0.9.2", "reqwest", - "ring", "rustls", "rustls-pki-types", + "rustls-platform-verifier", "rustls-webpki", "serde", "smallvec", "snafu", "strum 0.27.2", - "stun-rs", - "surge-ping", "time", "tokio", "tokio-stream", @@ -2011,34 +1843,35 @@ dependencies = [ "tracing", "url", "wasm-bindgen-futures", - "webpki-roots 0.26.11", + "webpki-roots", "z32", ] [[package]] name = "iroh-base" -version = "0.93.0" +version = "0.94.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "929fbe14046dfb01b41ccccaa5b476549924daa54438518bda11a9ab1598b2a9" +checksum = "db942f6f3d6fa9b475690c6e8e6684d60591dd886bf1bdfef4c60d89d502215c" dependencies = [ "curve25519-dalek", "data-encoding", "derive_more 2.0.1", "ed25519-dalek", "n0-snafu", - "nested_enum_utils 0.2.2", - "postcard", + "nested_enum_utils", "rand_core 0.9.3", "serde", "snafu", "url", + "zeroize", + "zeroize_derive", ] [[package]] name = "iroh-blobs" -version = "0.95.0" +version = "0.96.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f437bfba05366e2e53e38b45eef254af0f14aa3dd8c8d1104e7a0669f7562fd4" +checksum = "b7a58699e59c2deb116df7420bc6755bf5f445603f71998f274a99f1985a5bc5" dependencies = [ "anyhow", "arrayvec", @@ -2055,10 +1888,11 @@ dependencies = [ "iroh-io", "iroh-metrics", "iroh-quinn", + "iroh-tickets", "irpc", - "n0-future 0.2.0", + "n0-future", "n0-snafu", - "nested_enum_utils 0.2.2", + "nested_enum_utils", "postcard", "rand 0.9.2", "range-collections", @@ -2090,14 +1924,14 @@ dependencies = [ "futures-util", "hex", "iroh", - "iroh-base", "iroh-blobs", "iroh-gossip", "iroh-metrics", "iroh-quinn", + "iroh-tickets", "irpc", - "n0-future 0.1.3", - "nested_enum_utils 0.1.0", + "n0-future", + "nested_enum_utils", "num_enum", "parking_lot", "postcard", @@ -2124,9 +1958,9 @@ dependencies = [ [[package]] name = "iroh-gossip" -version = "0.93.0" +version = "0.94.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2dbea495851836cf9f44bc6028db1a932370d78f9c5b448200ada20a6bd305a" +checksum = "6f1b658eb51a96e1fe3d56dadb283fdc68fd11d8ac5d286838c6d2f62927293c" dependencies = [ "blake3", "bytes", @@ -2142,9 +1976,9 @@ dependencies = [ "iroh-base", "iroh-metrics", "irpc", - "n0-future 0.1.3", + "n0-future", "n0-snafu", - "nested_enum_utils 0.2.2", + "nested_enum_utils", "postcard", "rand 0.9.2", "serde", @@ -2256,9 +2090,9 @@ dependencies = [ [[package]] name = "iroh-relay" -version = "0.93.0" +version = "0.94.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbc49e535c2cf410d19f82d46dac2b3d0bff1763759a28cd1c67870085f2fc4" +checksum = "360e201ab1803201de9a125dd838f7a4d13e6ba3a79aeb46c7fbf023266c062e" dependencies = [ "ahash", "blake3", @@ -2269,8 +2103,6 @@ dependencies = [ "data-encoding", "derive_more 2.0.1", "getrandom 0.3.3", - "governor", - "hickory-proto", "hickory-resolver", "http", "http-body-util", @@ -2281,16 +2113,15 @@ dependencies = [ "iroh-quinn", "iroh-quinn-proto", "lru 0.16.1", - "n0-future 0.1.3", + "n0-future", "n0-snafu", - "nested_enum_utils 0.2.2", + "nested_enum_utils", "num_enum", "pin-project", "pkarr", "postcard", "rand 0.9.2", - "rcgen 0.14.3", - "regex", + "rcgen", "reloadable-state", "reqwest", "rustls", @@ -2298,7 +2129,6 @@ dependencies = [ "rustls-cert-reloadable-resolver", "rustls-pemfile", "rustls-pki-types", - "rustls-webpki", "serde", "serde_bytes", "sha1", @@ -2315,25 +2145,41 @@ dependencies = [ "tracing", "tracing-subscriber", "url", - "webpki-roots 0.26.11", + "webpki-roots", "ws_stream_wasm", "z32", ] +[[package]] +name = "iroh-tickets" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7683c7819693eb8b3d61d1d45ffa92e2faeb07762eb0c3debb50ad795538d221" +dependencies = [ + "data-encoding", + "derive_more 2.0.1", + "iroh-base", + "n0-snafu", + "nested_enum_utils", + "postcard", + "serde", + "snafu", +] + [[package]] name = "irpc" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e3fc4aa2bc2c1002655fab4254390f016f8b9bb65390600f9d8b11f9bdac76d" +checksum = "52cf44fdb253f2a3e22e5ecfa8efa466929f8b7cdd4fc0f958f655406e8cdab6" dependencies = [ "anyhow", "futures-buffered", "futures-util", "iroh-quinn", "irpc-derive", - "n0-future 0.1.3", + "n0-future", "postcard", - "rcgen 0.13.2", + "rcgen", "rustls", "serde", "smallvec", @@ -2345,13 +2191,13 @@ dependencies = [ [[package]] name = "irpc-derive" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f5706d47257e3f40b9e7dbc1934942b5792cc6a8670b7dda8856c2f5709cf98" +checksum = "969df6effc474e714fb7e738eb9859aa22f40dc2280cadeab245817075c7f273" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.104", ] [[package]] @@ -2493,12 +2339,6 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" -[[package]] -name = "md5" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" - [[package]] name = "memchr" version = "2.7.5" @@ -2558,30 +2398,9 @@ dependencies = [ [[package]] name = "n0-future" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb0e5d99e681ab3c938842b96fcb41bf8a7bb4bfdb11ccbd653a7e83e06c794" -dependencies = [ - "cfg_aliases", - "derive_more 1.0.0", - "futures-buffered", - "futures-lite", - "futures-util", - "js-sys", - "pin-project", - "send_wrapper", - "tokio", - "tokio-util", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-time", -] - -[[package]] -name = "n0-future" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89d7dd42bd0114c9daa9c4f2255d692a73bba45767ec32cf62892af6fe5d31f6" +checksum = "439e746b307c1fd0c08771c3cafcd1746c3ccdb0d9c7b859d3caded366b6da76" dependencies = [ "cfg_aliases", "derive_more 1.0.0", @@ -2613,27 +2432,15 @@ dependencies = [ [[package]] name = "n0-watcher" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31462392a10d5ada4b945e840cbec2d5f3fee752b96c4b33eb41414d8f45c2a" +checksum = "34c65e127e06e5a2781b28df6a33ea474a7bddc0ac0cfea888bd20c79a1b6516" dependencies = [ - "derive_more 1.0.0", - "n0-future 0.1.3", + "derive_more 2.0.1", + "n0-future", "snafu", ] -[[package]] -name = "nested_enum_utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f256ef99e7ac37428ef98c89bef9d84b590172de4bbfbe81b68a4cd3abadb32" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "nested_enum_utils" version = "0.2.2" @@ -2648,32 +2455,15 @@ dependencies = [ [[package]] name = "netdev" -version = "0.36.0" +version = "0.38.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862209dce034f82a44c95ce2b5183730d616f2a68746b9c1959aa2572e77c0a1" +checksum = "67ab878b4c90faf36dab10ea51d48c69ae9019bcca47c048a7c9b273d5d7a823" dependencies = [ "dlopen2", "ipnet", "libc", "netlink-packet-core", - "netlink-packet-route 0.22.0", - "netlink-sys", - "once_cell", - "system-configuration", - "windows-sys 0.59.0", -] - -[[package]] -name = "netdev" -version = "0.37.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa1e3eaf125c54c21e6221df12dd2a0a682784a068782dd564c836c0f281b6d" -dependencies = [ - "dlopen2", - "ipnet", - "libc", - "netlink-packet-core", - "netlink-packet-route 0.22.0", + "netlink-packet-route", "netlink-sys", "once_cell", "system-configuration", @@ -2682,62 +2472,30 @@ dependencies = [ [[package]] name = "netlink-packet-core" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72724faf704479d67b388da142b186f916188505e7e0b26719019c525882eda4" -dependencies = [ - "anyhow", - "byteorder", - "netlink-packet-utils", -] - -[[package]] -name = "netlink-packet-route" -version = "0.22.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0e7987b28514adf555dc1f9a5c30dfc3e50750bbaffb1aec41ca7b23dcd8e4" +checksum = "3463cbb78394cb0141e2c926b93fc2197e473394b761986eca3b9da2c63ae0f4" dependencies = [ - "anyhow", - "bitflags", - "byteorder", - "libc", - "log", - "netlink-packet-core", - "netlink-packet-utils", + "paste", ] [[package]] name = "netlink-packet-route" -version = "0.24.0" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56d83370a96813d7c977f8b63054f1162df6e5784f1c598d689236564fb5a6f2" +checksum = "3ec2f5b6839be2a19d7fa5aab5bc444380f6311c2b693551cb80f45caaa7b5ef" dependencies = [ - "anyhow", "bitflags", - "byteorder", "libc", "log", "netlink-packet-core", - "netlink-packet-utils", -] - -[[package]] -name = "netlink-packet-utils" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ede8a08c71ad5a95cdd0e4e52facd37190977039a4704eb82a283f713747d34" -dependencies = [ - "anyhow", - "byteorder", - "paste", - "thiserror 1.0.69", ] [[package]] name = "netlink-proto" -version = "0.11.5" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72452e012c2f8d612410d89eea01e2d9b56205274abb35d53f60200b2ec41d60" +checksum = "b65d130ee111430e47eed7896ea43ca693c387f097dd97376bffafbf25812128" dependencies = [ "bytes", "futures", @@ -2762,9 +2520,9 @@ dependencies = [ [[package]] name = "netwatch" -version = "0.9.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a63d76f52f3f15ebde3ca751a2ab73a33ae156662bc04383bac8e824f84e9bb" +checksum = "98d7ec7abdbfe67ee70af3f2002326491178419caea22254b9070e6ff0c83491" dependencies = [ "atomic-waker", "bytes", @@ -2773,12 +2531,12 @@ dependencies = [ "iroh-quinn-udp", "js-sys", "libc", - "n0-future 0.1.3", + "n0-future", "n0-watcher", - "nested_enum_utils 0.2.2", - "netdev 0.37.3", + "nested_enum_utils", + "netdev", "netlink-packet-core", - "netlink-packet-route 0.24.0", + "netlink-packet-route", "netlink-proto", "netlink-sys", "pin-project-lite", @@ -2790,17 +2548,11 @@ dependencies = [ "tokio-util", "tracing", "web-sys", - "windows", - "windows-result", + "windows 0.62.2", + "windows-result 0.4.1", "wmi", ] -[[package]] -name = "no-std-net" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43794a0ace135be66a25d3ae77d41b91615fb68ae937f904090203e81f755b65" - [[package]] name = "nom" version = "7.1.3" @@ -2811,12 +2563,6 @@ dependencies = [ "minimal-lexical", ] -[[package]] -name = "nonzero_ext" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21" - [[package]] name = "ntapi" version = "0.4.1" @@ -2917,9 +2663,9 @@ dependencies = [ [[package]] name = "oid-registry" -version = "0.7.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d8034d9489cdaf79228eb9f6a3b8d7bb32ba00d6645ebd48eef4077ceb5bd9" +checksum = "12f40cff3dde1b6087cc5d5f5d4d65712f34016a03ed60e9c08dcc392736b5b7" dependencies = [ "asn1-rs", ] @@ -3006,50 +2752,6 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" -[[package]] -name = "pest" -version = "2.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" -dependencies = [ - "memchr", - "thiserror 2.0.12", - "ucd-trie", -] - -[[package]] -name = "pest_derive" -version = "2.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb056d9e8ea77922845ec74a1c4e8fb17e7c218cc4fc11a15c5d25e189aa40bc" -dependencies = [ - "pest", - "pest_generator", -] - -[[package]] -name = "pest_generator" -version = "2.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87e404e638f781eb3202dc82db6760c8ae8a1eeef7fb3fa8264b2ef280504966" -dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn 2.0.104", -] - -[[package]] -name = "pest_meta" -version = "2.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edd1101f170f5903fde0914f899bb503d9ff5271d7ba76bbb70bea63690cc0d5" -dependencies = [ - "pest", - "sha2 0.10.9", -] - [[package]] name = "pharos" version = "0.5.3" @@ -3133,48 +2835,6 @@ dependencies = [ "spki", ] -[[package]] -name = "pnet_base" -version = "0.34.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4cf6fb3ab38b68d01ab2aea03ed3d1132b4868fa4e06285f29f16da01c5f4c" -dependencies = [ - "no-std-net", -] - -[[package]] -name = "pnet_macros" -version = "0.34.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "688b17499eee04a0408aca0aa5cba5fc86401d7216de8a63fdf7a4c227871804" -dependencies = [ - "proc-macro2", - "quote", - "regex", - "syn 2.0.104", -] - -[[package]] -name = "pnet_macros_support" -version = "0.34.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eea925b72f4bd37f8eab0f221bbe4c78b63498350c983ffa9dd4bcde7e030f56" -dependencies = [ - "pnet_base", -] - -[[package]] -name = "pnet_packet" -version = "0.34.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a005825396b7fe7a38a8e288dbc342d5034dac80c15212436424fef8ea90ba" -dependencies = [ - "glob", - "pnet_base", - "pnet_macros", - "pnet_macros_support", -] - [[package]] name = "poly1305" version = "0.9.0-rc.2" @@ -3193,9 +2853,9 @@ checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] name = "portmapper" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f7313cafd74e95e6a358c1d0a495112f175502cc2e69870d0a5b12b6553059" +checksum = "d73aa9bd141e0ff6060fea89a5437883f3b9ceea1cda71c790b90e17d072a3b3" dependencies = [ "base64", "bytes", @@ -3206,7 +2866,7 @@ dependencies = [ "igd-next", "iroh-metrics", "libc", - "nested_enum_utils 0.2.2", + "nested_enum_utils", "netwatch", "num_enum", "rand 0.9.2", @@ -3281,40 +2941,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "precis-core" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c2e7b31f132e0c6f8682cfb7bf4a5340dbe925b7986618d0826a56dfe0c8e56" -dependencies = [ - "precis-tools", - "ucd-parse", - "unicode-normalization", -] - -[[package]] -name = "precis-profiles" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc4f67f78f50388f03494794766ba824a704db16fb5d400fe8d545fa7bc0d3f1" -dependencies = [ - "lazy_static", - "precis-core", - "precis-tools", - "unicode-normalization", -] - -[[package]] -name = "precis-tools" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cc1eb2d5887ac7bfd2c0b745764db89edb84b856e4214e204ef48ef96d10c4a" -dependencies = [ - "lazy_static", - "regex", - "ucd-parse", -] - [[package]] name = "proc-macro-crate" version = "3.3.0" @@ -3385,21 +3011,6 @@ dependencies = [ "unarray", ] -[[package]] -name = "quanta" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3ab5a9d756f0d97bdc89019bd2e4ea098cf9cde50ee7564dde6b81ccc8f06c7" -dependencies = [ - "crossbeam-utils", - "libc", - "once_cell", - "raw-cpuid", - "wasi 0.11.1+wasi-snapshot-preview1", - "web-sys", - "winapi", -] - [[package]] name = "quick-error" version = "1.2.3" @@ -3470,16 +3081,6 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "quoted-string-parser" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc75379cdb451d001f1cb667a9f74e8b355e9df84cc5193513cbe62b96fc5e9" -dependencies = [ - "pest", - "pest_derive", -] - [[package]] name = "r-efi" version = "5.3.0" @@ -3567,38 +3168,17 @@ dependencies = [ "smallvec", ] -[[package]] -name = "raw-cpuid" -version = "11.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6df7ab838ed27997ba19a4664507e6f82b41fe6e20be42929332156e5e85146" -dependencies = [ - "bitflags", -] - -[[package]] -name = "rcgen" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75e669e5202259b5314d1ea5397316ad400819437857b90861765f24c4cf80a2" -dependencies = [ - "pem", - "ring", - "rustls-pki-types", - "time", - "yasna", -] - [[package]] name = "rcgen" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0068c5b3cab1d4e271e0bb6539c87563c43411cad90b057b15c79958fbeb41f7" +checksum = "5fae430c6b28f1ad601274e78b7dffa0546de0b73b4cd32f46723c0c2a16f7a5" dependencies = [ "pem", "ring", "rustls-pki-types", "time", + "x509-parser", "yasna", ] @@ -3649,19 +3229,7 @@ dependencies = [ "cfg-if", "libc", "rustix", - "windows", -] - -[[package]] -name = "regex" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", + "windows 0.61.3", ] [[package]] @@ -3675,12 +3243,6 @@ dependencies = [ "regex-syntax", ] -[[package]] -name = "regex-lite" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" - [[package]] name = "regex-syntax" version = "0.8.5" @@ -3742,7 +3304,7 @@ dependencies = [ "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots 1.0.2", + "webpki-roots", ] [[package]] @@ -3810,9 +3372,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.31" +version = "0.23.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" +checksum = "751e04a496ca00bb97a5e043158d23d66b5aabf2e1d5aa2a0aaebb1aafe6f82c" dependencies = [ "log", "once_cell", @@ -3918,9 +3480,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.4" +version = "0.103.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" +checksum = "e10b3f4191e8a80e6b43eebabfac91e5dcecebb27a71f04e820c47ec41d314bf" dependencies = [ "ring", "rustls-pki-types", @@ -4037,10 +3599,11 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ + "serde_core", "serde_derive", ] @@ -4062,11 +3625,20 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -4128,13 +3700,13 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.6" +version = "0.11.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +checksum = "c5e046edf639aa2e7afb285589e5405de2ef7e61d4b0ac1e30256e3eab911af9" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.7", + "digest", ] [[package]] @@ -4143,17 +3715,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - [[package]] name = "sha2" version = "0.11.0-rc.2" @@ -4162,7 +3723,7 @@ checksum = "d1e3878ab0f98e35b2df35fe53201d088299b41a6bb63e3e34dada2ac4abd924" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.11.0-rc.3", + "digest", ] [[package]] @@ -4227,9 +3788,9 @@ dependencies = [ [[package]] name = "snafu" -version = "0.8.6" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320b01e011bf8d5d7a4a4a4be966d9160968935849c83b918827f6a435e7f627" +checksum = "6e84b3f4eacbf3a1ce05eac6763b4d629d60cbc94d632e4092c54ade71f1e1a2" dependencies = [ "backtrace", "snafu-derive", @@ -4237,9 +3798,9 @@ dependencies = [ [[package]] name = "snafu-derive" -version = "0.8.6" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1961e2ef424c1424204d3a5d6975f934f56b6d50ff5732382d84ebf460e147f7" +checksum = "c1c97747dbf44bb1ca44a561ece23508e99cb592e862f22222dcf42f51d1e451" dependencies = [ "heck", "proc-macro2", @@ -4282,15 +3843,6 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" -[[package]] -name = "spinning_top" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d96d2d1d716fb500937168cc09353ffdc7a012be8475ac7308e1bdf0e3923300" -dependencies = [ - "lock_api", -] - [[package]] name = "spki" version = "0.8.0-rc.4" @@ -4379,52 +3931,12 @@ dependencies = [ "syn 2.0.104", ] -[[package]] -name = "stun-rs" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb921f10397d5669e1af6455e9e2d367bf1f9cebcd6b1dd1dc50e19f6a9ac2ac" -dependencies = [ - "base64", - "bounded-integer", - "byteorder", - "crc", - "enumflags2", - "fallible-iterator", - "hmac-sha1", - "hmac-sha256", - "hostname-validator", - "lazy_static", - "md5", - "paste", - "precis-core", - "precis-profiles", - "quoted-string-parser", - "rand 0.9.2", -] - [[package]] name = "subtle" version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" -[[package]] -name = "surge-ping" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fda78103d8016bb25c331ddc54af634e801806463682cc3e549d335df644d95" -dependencies = [ - "hex", - "parking_lot", - "pnet_packet", - "rand 0.9.2", - "socket2 0.5.10", - "thiserror 1.0.69", - "tokio", - "tracing", -] - [[package]] name = "syn" version = "1.0.109" @@ -4723,9 +4235,9 @@ dependencies = [ [[package]] name = "tokio-rustls-acme" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f296d48ff72e0df96e2d7ef064ad5904d016a130869e542f00b08c8e05cc18cf" +checksum = "cfdba5ab34e36bb015bb2cdfc13a3ee3473bcba240162f96301a3eacef2f769d" dependencies = [ "async-trait", "base64", @@ -4735,7 +4247,7 @@ dependencies = [ "num-bigint", "pem", "proc-macro2", - "rcgen 0.13.2", + "rcgen", "reqwest", "ring", "rustls", @@ -4745,7 +4257,7 @@ dependencies = [ "time", "tokio", "tokio-rustls", - "webpki-roots 0.26.11", + "webpki-roots", "x509-parser", ] @@ -5007,21 +4519,6 @@ version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" -[[package]] -name = "ucd-parse" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06ff81122fcbf4df4c1660b15f7e3336058e7aec14437c9f85c6b31a0f279b9" -dependencies = [ - "regex-lite", -] - -[[package]] -name = "ucd-trie" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" - [[package]] name = "unarray" version = "0.1.4" @@ -5034,15 +4531,6 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" -[[package]] -name = "unicode-normalization" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" -dependencies = [ - "tinyvec", -] - [[package]] name = "unicode-xid" version = "0.2.6" @@ -5055,7 +4543,7 @@ version = "0.6.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a55be643b40a21558f44806b53ee9319595bc7ca6896372e4e08e5d7d83c9cd6" dependencies = [ - "crypto-common 0.2.0-rc.4", + "crypto-common", "subtle", ] @@ -5285,18 +4773,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" -dependencies = [ - "webpki-roots 1.0.2", -] - -[[package]] -name = "webpki-roots" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" +checksum = "32b130c0d2d49f8b6889abc456e795e82525204f27c42cf767cf0d7734e089b8" dependencies = [ "rustls-pki-types", ] @@ -5355,11 +4834,23 @@ version = "0.61.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ - "windows-collections", - "windows-core", - "windows-future", - "windows-link", - "windows-numerics", + "windows-collections 0.2.0", + "windows-core 0.61.2", + "windows-future 0.2.1", + "windows-link 0.1.3", + "windows-numerics 0.2.0", +] + +[[package]] +name = "windows" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" +dependencies = [ + "windows-collections 0.3.2", + "windows-core 0.62.2", + "windows-future 0.3.2", + "windows-numerics 0.3.1", ] [[package]] @@ -5368,7 +4859,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" dependencies = [ - "windows-core", + "windows-core 0.61.2", +] + +[[package]] +name = "windows-collections" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" +dependencies = [ + "windows-core 0.62.2", ] [[package]] @@ -5379,9 +4879,22 @@ checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ "windows-implement", "windows-interface", - "windows-link", - "windows-result", - "windows-strings", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", ] [[package]] @@ -5390,16 +4903,27 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ - "windows-core", - "windows-link", - "windows-threading", + "windows-core 0.61.2", + "windows-link 0.1.3", + "windows-threading 0.1.0", +] + +[[package]] +name = "windows-future" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" +dependencies = [ + "windows-core 0.62.2", + "windows-link 0.2.1", + "windows-threading 0.2.1", ] [[package]] name = "windows-implement" -version = "0.60.0" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", @@ -5408,9 +4932,9 @@ dependencies = [ [[package]] name = "windows-interface" -version = "0.59.1" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", @@ -5423,14 +4947,30 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + [[package]] name = "windows-numerics" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ - "windows-core", - "windows-link", + "windows-core 0.61.2", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-numerics" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" +dependencies = [ + "windows-core 0.62.2", + "windows-link 0.2.1", ] [[package]] @@ -5439,7 +4979,16 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-link", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link 0.2.1", ] [[package]] @@ -5448,7 +4997,16 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-link", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link 0.2.1", ] [[package]] @@ -5548,7 +5106,7 @@ version = "0.53.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" dependencies = [ - "windows-link", + "windows-link 0.1.3", "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", "windows_i686_gnu 0.53.0", @@ -5565,7 +5123,16 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" dependencies = [ - "windows-link", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-threading" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" +dependencies = [ + "windows-link 0.2.1", ] [[package]] @@ -5787,8 +5354,8 @@ dependencies = [ "log", "serde", "thiserror 2.0.12", - "windows", - "windows-core", + "windows 0.61.3", + "windows-core 0.61.2", ] [[package]] @@ -5818,9 +5385,9 @@ dependencies = [ [[package]] name = "x509-parser" -version = "0.16.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcbc162f30700d6f3f82a24bf7cc62ffe7caea42c0b2cba8bf7f3ae50cf51f69" +checksum = "eb3e137310115a65136898d2079f003ce33331a6c4b0d51f1531d1be082b6425" dependencies = [ "asn1-rs", "data-encoding", @@ -5828,8 +5395,9 @@ dependencies = [ "lazy_static", "nom", "oid-registry", + "ring", "rusticata-macros", - "thiserror 1.0.69", + "thiserror 2.0.12", "time", ] @@ -5930,9 +5498,23 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] [[package]] name = "zerotrie" diff --git a/Cargo.toml b/Cargo.toml index 93d0baeb..f3c49914 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,13 +31,13 @@ futures-buffered = "0.2.4" futures-lite = "2.3.0" futures-util = { version = "0.3.25" } hex = "0.4" -iroh = { version = "0.93" } -iroh-base = { version = "0.93", features = ["ticket"] } -iroh-blobs = { version = "0.95" } -iroh-gossip = { version = "0.93", features = ["net"] } +iroh = { version = "0.94" } +iroh-tickets = { version = "0.1"} +iroh-blobs = { version = "0.96" } +iroh-gossip = { version = "0.94", features = ["net"] } iroh-metrics = { version = "0.36", default-features = false } -irpc = { version = "0.9.0" } -n0-future = "0.1.3" +irpc = { version = "0.10.0" } +n0-future = "0.3" num_enum = "0.7" postcard = { version = "1", default-features = false, features = [ "alloc", @@ -60,8 +60,8 @@ tracing = "0.1" [dev-dependencies] data-encoding = "2.6.0" -iroh = { version = "0.93", features = ["test-utils"] } -nested_enum_utils = "0.1.0" +iroh = { version = "0.94", features = ["test-utils"] } +nested_enum_utils = "0.2" parking_lot = "0.12.3" proptest = "1.2.0" rand_chacha = "0.9" diff --git a/README.md b/README.md index 46daa23a..24ecda7a 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ use iroh_gossip::{net::Gossip, ALPN as GOSSIP_ALPN}; async fn main() -> anyhow::Result<()> { // create an iroh endpoint that includes the standard discovery mechanisms // we've built at number0 - let endpoint = Endpoint::builder().discovery_n0().bind().await?; + let endpoint = Endpoint::builder().bind().await?; // build the blobs protocol let blobs = MemStore::default(); diff --git a/examples/setup.rs b/examples/setup.rs index 5f1a677a..c99cf081 100644 --- a/examples/setup.rs +++ b/examples/setup.rs @@ -7,7 +7,7 @@ use iroh_gossip::{net::Gossip, ALPN as GOSSIP_ALPN}; async fn main() -> anyhow::Result<()> { // create an iroh endpoint that includes the standard discovery mechanisms // we've built at number0 - let endpoint = Endpoint::builder().discovery_n0().bind().await?; + let endpoint = Endpoint::builder().bind().await?; // build the blobs protocol let blobs = MemStore::default(); diff --git a/src/api.rs b/src/api.rs index 1e2e75c9..fc5e9c07 100644 --- a/src/api.rs +++ b/src/api.rs @@ -16,7 +16,7 @@ use std::{ use anyhow::{Context, Result}; use bytes::Bytes; -use iroh::NodeAddr; +use iroh::EndpointAddr; use iroh_blobs::{ api::blobs::{AddPathOptions, AddProgressItem, ExportMode, ExportOptions, ExportProgress}, Hash, @@ -433,7 +433,7 @@ impl Doc { } /// Starts to sync this document with a list of peers. - pub async fn start_sync(&self, peers: Vec) -> Result<()> { + pub async fn start_sync(&self, peers: Vec) -> Result<()> { self.ensure_open()?; self.inner .rpc(StartSyncRequest { diff --git a/src/api/actor.rs b/src/api/actor.rs index 9faf088c..5a8fce4b 100644 --- a/src/api/actor.rs +++ b/src/api/actor.rs @@ -389,7 +389,7 @@ impl RpcActor { mode, addr_options, } = req; - let me = self.endpoint.node_addr(); + let me = self.endpoint.addr(); let me = addr_options.apply(&me); let capability = match mode { diff --git a/src/api/protocol.rs b/src/api/protocol.rs index 194705de..1575474a 100644 --- a/src/api/protocol.rs +++ b/src/api/protocol.rs @@ -3,7 +3,7 @@ use std::path::PathBuf; use bytes::Bytes; -use iroh::NodeAddr; +use iroh::EndpointAddr; use iroh_blobs::{api::blobs::ExportMode, Hash}; use irpc::{ channel::{mpsc, oneshot}, @@ -179,7 +179,7 @@ pub struct DelResponse { #[derive(Debug, Serialize, Deserialize, Clone)] pub struct StartSyncRequest { pub doc_id: NamespaceId, - pub peers: Vec, + pub peers: Vec, } #[derive(Debug, Serialize, Deserialize, Clone)] @@ -365,7 +365,7 @@ pub enum DocsProtocol { AuthorDelete(AuthorDeleteRequest), } -/// Options to configure what is included in a [`iroh::NodeAddr`]. +/// Options to configure what is included in a [`iroh::EndpointAddr`]. #[derive( Copy, Clone, @@ -396,32 +396,29 @@ impl AddrInfoOptions { /// Apply the options to the given address. pub fn apply( &self, - iroh::NodeAddr { - node_id, - relay_url, - direct_addresses, - }: &iroh::NodeAddr, - ) -> iroh::NodeAddr { + iroh::EndpointAddr { id, addrs }: &iroh::EndpointAddr, + ) -> iroh::EndpointAddr { match self { - Self::Id => iroh::NodeAddr { - node_id: *node_id, - relay_url: None, - direct_addresses: Default::default(), + Self::Id => iroh::EndpointAddr::new(*id), + Self::Relay => iroh::EndpointAddr { + id: *id, + addrs: addrs + .iter() + .filter(|addr| matches!(addr, iroh::TransportAddr::Relay(_))) + .cloned() + .collect(), }, - Self::Relay => iroh::NodeAddr { - node_id: *node_id, - relay_url: relay_url.clone(), - direct_addresses: Default::default(), + Self::Addresses => iroh::EndpointAddr { + id: *id, + addrs: addrs + .iter() + .filter(|addr| matches!(addr, iroh::TransportAddr::Ip(_))) + .cloned() + .collect(), }, - Self::Addresses => iroh::NodeAddr { - node_id: *node_id, - relay_url: None, - direct_addresses: direct_addresses.clone(), - }, - Self::RelayAndAddresses => iroh::NodeAddr { - node_id: *node_id, - relay_url: relay_url.clone(), - direct_addresses: direct_addresses.clone(), + Self::RelayAndAddresses => iroh::EndpointAddr { + id: *id, + addrs: addrs.clone(), }, } } diff --git a/src/engine.rs b/src/engine.rs index 237018b0..06efe0ae 100644 --- a/src/engine.rs +++ b/src/engine.rs @@ -10,7 +10,7 @@ use std::{ use anyhow::{bail, Context, Result}; use futures_lite::{Stream, StreamExt}; -use iroh::{Endpoint, NodeAddr, PublicKey}; +use iroh::{Endpoint, EndpointAddr, PublicKey}; use iroh_blobs::{ api::{blobs::BlobStatus, downloader::Downloader, Store}, store::fs::options::{ProtectCb, ProtectOutcome}, @@ -75,7 +75,7 @@ impl Engine { protect_cb: Option, ) -> anyhow::Result { let (live_actor_tx, to_live_actor_recv) = mpsc::channel(ACTOR_CHANNEL_CAP); - let me = endpoint.node_id().fmt_short().to_string(); + let me = endpoint.id().fmt_short().to_string(); let content_status_cb: ContentStatusCallback = { let blobs = bao_store.blobs().clone(); @@ -173,7 +173,7 @@ impl Engine { /// /// If `peers` is non-empty, it will both do an initial set-reconciliation sync with each peer, /// and join an iroh-gossip swarm with these peers to receive and broadcast document updates. - pub async fn start_sync(&self, namespace: NamespaceId, peers: Vec) -> Result<()> { + pub async fn start_sync(&self, namespace: NamespaceId, peers: Vec) -> Result<()> { let (reply, reply_rx) = oneshot::channel(); self.to_live_actor .send(ToLiveActor::StartSync { diff --git a/src/engine/gossip.rs b/src/engine/gossip.rs index 102db796..bb892287 100644 --- a/src/engine/gossip.rs +++ b/src/engine/gossip.rs @@ -4,7 +4,7 @@ use anyhow::{Context, Result}; use bytes::Bytes; use futures_lite::StreamExt; use futures_util::FutureExt; -use iroh::NodeId; +use iroh::EndpointId; use iroh_gossip::{ api::{Event, GossipReceiver, GossipSender, JoinOptions}, net::Gossip, @@ -44,7 +44,7 @@ impl GossipState { } } - pub async fn join(&mut self, namespace: NamespaceId, bootstrap: Vec) -> Result<()> { + pub async fn join(&mut self, namespace: NamespaceId, bootstrap: Vec) -> Result<()> { match self.active.entry(namespace) { hash_map::Entry::Occupied(mut entry) => { if !bootstrap.is_empty() { diff --git a/src/engine/live.rs b/src/engine/live.rs index 8f00654a..9a4b11f1 100644 --- a/src/engine/live.rs +++ b/src/engine/live.rs @@ -8,7 +8,9 @@ use std::{ use anyhow::{Context, Result}; use futures_lite::FutureExt; -use iroh::{Endpoint, NodeAddr, NodeId, PublicKey}; +use iroh::{ + discovery::static_provider::StaticProvider, Endpoint, EndpointAddr, EndpointId, PublicKey, +}; use iroh_blobs::{ api::{ blobs::BlobStatus, @@ -38,9 +40,6 @@ use crate::{ AuthorHeads, ContentStatus, NamespaceId, SignedEntry, }; -/// Name used for logging when new node addresses are added from the docs engine. -const SOURCE_NAME: &str = "docs_engine"; - /// An iroh-docs operation /// /// This is the message that is broadcast over iroh-gossip. @@ -67,7 +66,7 @@ pub struct SyncReport { pub enum ToLiveActor { StartSync { namespace: NamespaceId, - peers: Vec, + peers: Vec, #[debug("onsehot::Sender")] reply: sync::oneshot::Sender>, }, @@ -157,6 +156,7 @@ pub struct LiveActor { endpoint: Endpoint, bao_store: Store, downloader: Downloader, + static_provider: StaticProvider, replica_events_tx: async_channel::Sender, replica_events_rx: async_channel::Receiver, @@ -201,12 +201,15 @@ impl LiveActor { ) -> Self { let (replica_events_tx, replica_events_rx) = async_channel::bounded(1024); let gossip_state = GossipState::new(gossip, sync.clone(), sync_actor_tx.clone()); + let static_provider = StaticProvider::new(); + endpoint.discovery().add(static_provider.clone()); Self { inbox, sync, replica_events_rx, replica_events_tx, endpoint, + static_provider, gossip: gossip_state, bao_store, downloader, @@ -376,7 +379,7 @@ impl LiveActor { &endpoint, &sync, namespace, - NodeAddr::new(peer), + EndpointAddr::new(peer), Some(&metrics), ) .await; @@ -401,7 +404,11 @@ impl LiveActor { Ok(()) } - async fn start_sync(&mut self, namespace: NamespaceId, mut peers: Vec) -> Result<()> { + async fn start_sync( + &mut self, + namespace: NamespaceId, + mut peers: Vec, + ) -> Result<()> { debug!(?namespace, peers = peers.len(), "start sync"); // update state to allow sync if !self.state.is_syncing(&namespace) { @@ -421,7 +428,7 @@ impl LiveActor { // peers are stored as bytes, don't fail the operation if they can't be // decoded: simply ignore the peer match PublicKey::from_bytes(&peer_id_bytes) { - Ok(public_key) => Some(NodeAddr::new(public_key)), + Ok(public_key) => Some(EndpointAddr::new(public_key)), Err(_signing_error) => { warn!("potential db corruption: peers per doc can't be decoded"); None @@ -459,26 +466,18 @@ impl LiveActor { Ok(()) } - async fn join_peers(&mut self, namespace: NamespaceId, peers: Vec) -> Result<()> { + async fn join_peers(&mut self, namespace: NamespaceId, peers: Vec) -> Result<()> { let mut peer_ids = Vec::new(); // add addresses of peers to our endpoint address book for peer in peers.into_iter() { - let peer_id = peer.node_id; + let peer_id = peer.id; // adding a node address without any addressing info fails with an error, // but we still want to include those peers because node discovery might find addresses for them - if peer.is_empty() { - peer_ids.push(peer_id) - } else { - match self.endpoint.add_node_addr_with_source(peer, SOURCE_NAME) { - Ok(()) => { - peer_ids.push(peer_id); - } - Err(err) => { - warn!(peer = %peer_id.fmt_short(), "failed to add known addrs: {err:?}"); - } - } + if !peer.is_empty() { + self.static_provider.add_endpoint_info(peer); } + peer_ids.push(peer_id); } // tell gossip to join @@ -679,7 +678,7 @@ impl LiveActor { async fn on_neighbor_content_ready( &mut self, namespace: NamespaceId, - node: NodeId, + node: EndpointId, hash: Hash, ) { self.start_download(namespace, hash, node, true).await; @@ -826,7 +825,7 @@ impl LiveActor { peer: PublicKey, ) -> AcceptOutcome { self.state - .accept_request(&self.endpoint.node_id(), &namespace, peer) + .accept_request(&self.endpoint.id(), &namespace, peer) } } @@ -898,10 +897,10 @@ struct QueuedHashes { } #[derive(Debug, Clone, Default)] -struct ProviderNodes(Arc>>>); +struct ProviderNodes(Arc>>>); impl ContentDiscovery for ProviderNodes { - fn find_providers(&self, hash: HashAndFormat) -> n0_future::stream::Boxed { + fn find_providers(&self, hash: HashAndFormat) -> n0_future::stream::Boxed { let nodes = self .0 .lock() diff --git a/src/engine/state.rs b/src/engine/state.rs index bb10dd87..a6ff6666 100644 --- a/src/engine/state.rs +++ b/src/engine/state.rs @@ -4,7 +4,7 @@ use std::{ }; use anyhow::Result; -use iroh::NodeId; +use iroh::EndpointId; use serde::{Deserialize, Serialize}; use tracing::{debug, warn}; @@ -55,7 +55,7 @@ pub struct NamespaceStates(BTreeMap); #[derive(Default)] struct NamespaceState { - nodes: BTreeMap, + nodes: BTreeMap, may_emit_ready: bool, } @@ -76,7 +76,7 @@ impl NamespaceStates { pub fn start_connect( &mut self, namespace: &NamespaceId, - node: NodeId, + node: EndpointId, reason: SyncReason, ) -> bool { match self.entry(namespace, node) { @@ -93,9 +93,9 @@ impl NamespaceStates { /// Returns the [`AcceptOutcome`] to be performed. pub fn accept_request( &mut self, - me: &NodeId, + me: &EndpointId, namespace: &NamespaceId, - node: NodeId, + node: EndpointId, ) -> AcceptOutcome { let Some(state) = self.entry(namespace, node) else { return AcceptOutcome::Reject(AbortReason::NotFound); @@ -113,7 +113,7 @@ impl NamespaceStates { pub fn finish( &mut self, namespace: &NamespaceId, - node: NodeId, + node: EndpointId, origin: &Origin, result: Result, ) -> Option<(SystemTime, bool)> { @@ -155,7 +155,7 @@ impl NamespaceStates { /// Get the [`PeerState`] for a namespace and node. /// If the namespace is syncing and the node so far unknown, initialize and return a default [`PeerState`]. /// If the namespace is not syncing return None. - fn entry(&mut self, namespace: &NamespaceId, node: NodeId) -> Option<&mut PeerState> { + fn entry(&mut self, namespace: &NamespaceId, node: EndpointId) -> Option<&mut PeerState> { self.0 .get_mut(namespace) .map(|n| n.nodes.entry(node).or_default()) @@ -216,7 +216,7 @@ impl PeerState { } } - fn accept_request(&mut self, me: &NodeId, node: &NodeId) -> AcceptOutcome { + fn accept_request(&mut self, me: &EndpointId, node: &EndpointId) -> AcceptOutcome { let outcome = match &self.state { SyncState::Idle => AcceptOutcome::Allow, SyncState::Running { origin, .. } => match origin { @@ -251,7 +251,7 @@ enum SyncDirection { Connect, } -fn expected_sync_direction(self_node_id: &NodeId, other_node_id: &NodeId) -> SyncDirection { +fn expected_sync_direction(self_node_id: &EndpointId, other_node_id: &EndpointId) -> SyncDirection { if self_node_id.as_bytes() > other_node_id.as_bytes() { SyncDirection::Accept } else { diff --git a/src/net.rs b/src/net.rs index e8dc23f5..1b40ee28 100644 --- a/src/net.rs +++ b/src/net.rs @@ -5,7 +5,7 @@ use std::{ time::{Duration, Instant}, }; -use iroh::{Endpoint, NodeAddr, PublicKey}; +use iroh::{Endpoint, EndpointAddr, PublicKey}; use serde::{Deserialize, Serialize}; use tracing::{debug, error_span, trace, Instrument}; @@ -26,11 +26,11 @@ pub async fn connect_and_sync( endpoint: &Endpoint, sync: &SyncHandle, namespace: NamespaceId, - peer: NodeAddr, + peer: EndpointAddr, metrics: Option<&Metrics>, ) -> Result { let t_start = Instant::now(); - let peer_id = peer.node_id; + let peer_id = peer.id; trace!("connect"); let connection = endpoint .connect(peer, crate::ALPN) @@ -114,7 +114,7 @@ where Fut: Future, { let t_start = Instant::now(); - let peer = connection.remote_node_id().map_err(AcceptError::connect)?; + let peer = connection.remote_id().map_err(AcceptError::connect)?; let (mut send_stream, mut recv_stream) = connection .accept_bi() .await diff --git a/src/ticket.rs b/src/ticket.rs index f51f289f..4cfccc59 100644 --- a/src/ticket.rs +++ b/src/ticket.rs @@ -1,19 +1,19 @@ //! Tickets for `iroh-docs` documents. -use iroh::NodeAddr; -use iroh_base::ticket; +use iroh::EndpointAddr; +use iroh_tickets::{ParseError, Ticket}; use serde::{Deserialize, Serialize}; use crate::Capability; /// Contains both a key (either secret or public) to a document, and a list of peers to join. #[derive(Serialize, Deserialize, Clone, Debug, derive_more::Display)] -#[display("{}", ticket::Ticket::serialize(self))] +#[display("{}", Ticket::serialize(self))] pub struct DocTicket { /// either a public or private key pub capability: Capability, /// A list of nodes to contact. - pub nodes: Vec, + pub nodes: Vec, } /// Wire format for [`DocTicket`]. @@ -26,7 +26,7 @@ enum TicketWireFormat { Variant0(DocTicket), } -impl ticket::Ticket for DocTicket { +impl Ticket for DocTicket { const KIND: &'static str = "doc"; fn to_bytes(&self) -> Vec { @@ -34,11 +34,11 @@ impl ticket::Ticket for DocTicket { postcard::to_stdvec(&data).expect("postcard serialization failed") } - fn from_bytes(bytes: &[u8]) -> Result { + fn from_bytes(bytes: &[u8]) -> Result { let res: TicketWireFormat = postcard::from_bytes(bytes)?; let TicketWireFormat::Variant0(res) = res; if res.nodes.is_empty() { - return Err(ticket::ParseError::verification_failed( + return Err(ParseError::verification_failed( "addressing info cannot be empty", )); } @@ -48,7 +48,7 @@ impl ticket::Ticket for DocTicket { impl DocTicket { /// Create a new doc ticket - pub fn new(capability: Capability, peers: Vec) -> Self { + pub fn new(capability: Capability, peers: Vec) -> Self { Self { capability, nodes: peers, @@ -57,9 +57,9 @@ impl DocTicket { } impl std::str::FromStr for DocTicket { - type Err = ticket::ParseError; + type Err = ParseError; fn from_str(s: &str) -> Result { - ticket::Ticket::deserialize(s) + Ticket::deserialize(s) } } @@ -88,7 +88,7 @@ mod tests { let ticket = DocTicket { capability: Capability::Read(namespace_id), - nodes: vec![NodeAddr::from_parts(node_id, None, [])], + nodes: vec![EndpointAddr::new(node_id)], }; let s = ticket.to_string(); let base32 = data_encoding::BASE32_NOPAD @@ -105,8 +105,7 @@ mod tests { ae58ff8833241ac82d6ff7611046ed67b5072d142c588d0063e942d9a75502b6 # namespace id, 32 bytes, see above 01 # one node ae58ff8833241ac82d6ff7611046ed67b5072d142c588d0063e942d9a75502b6 # node id, 32 bytes, see above - 00 # no relay url - 00 # no direct addresses + 00 # no addrs ").unwrap(); assert_eq!(base32, expected); } diff --git a/tests/sync.rs b/tests/sync.rs index b878e48a..32304fc7 100644 --- a/tests/sync.rs +++ b/tests/sync.rs @@ -46,7 +46,7 @@ fn spawn_node( async move { let node = test_node(secret_key); let node = node.spawn().await?; - info!(?i, me = %node.node_id().fmt_short(), "node spawned"); + info!(?i, me = %node.id().fmt_short(), "node spawned"); Ok(node) } } @@ -78,7 +78,7 @@ async fn sync_simple() -> Result<()> { let clients = nodes.iter().map(|node| node.client()).collect::>(); // create doc on node0 - let peer0 = nodes[0].node_id(); + let peer0 = nodes[0].id(); let author0 = clients[0].docs().author_create().await?; let doc0 = clients[0].docs().create().await?; let blobs0 = clients[0].blobs(); @@ -93,7 +93,7 @@ async fn sync_simple() -> Result<()> { let mut events0 = doc0.subscribe().await?; info!("node1: join"); - let peer1 = nodes[1].node_id(); + let peer1 = nodes[1].id(); let doc1 = clients[1].docs().import(ticket.clone()).await?; let blobs1 = clients[1].blobs(); let mut events1 = doc1.subscribe().await?; @@ -160,7 +160,7 @@ async fn sync_gossip_bulk() -> Result<()> { let nodes = spawn_nodes(2, &mut rng).await?; let clients = nodes.iter().map(|node| node.client()).collect::>(); - let _peer0 = nodes[0].node_id(); + let _peer0 = nodes[0].id(); let author0 = clients[0].docs().author_create().await?; let doc0 = clients[0].docs().create().await?; let mut ticket = doc0 @@ -251,7 +251,7 @@ async fn sync_full_basic() -> testresult::TestResult<()> { .collect::>(); // peer0: create doc and ticket - let peer0 = nodes[0].node_id(); + let peer0 = nodes[0].id(); let author0 = clients[0].docs().author_create().await?; let doc0 = clients[0].docs().create().await?; let blobs0 = clients[0].blobs(); @@ -274,7 +274,7 @@ async fn sync_full_basic() -> testresult::TestResult<()> { .await?; info!("peer1: spawn"); - let peer1 = nodes[1].node_id(); + let peer1 = nodes[1].id(); let author1 = clients[1].docs().author_create().await?; info!("peer1: join doc"); let doc1 = clients[1].docs().import(ticket.clone()).await?; @@ -346,7 +346,7 @@ async fn sync_full_basic() -> testresult::TestResult<()> { clients.push(nodes.last().unwrap().client().clone()); let doc2 = clients[2].docs().import(ticket).await?; let blobs2 = clients[2].blobs(); - let peer2 = nodes[2].node_id(); + let peer2 = nodes[2].id(); let mut events2 = doc2.subscribe().await?; info!("peer2: wait for 9 events (from sync with peers)"); @@ -494,7 +494,7 @@ async fn test_sync_via_relay() -> Result<()> { .insecure_skip_relay_cert_verify(true) .spawn() .await?; - let node1_id = node1.node_id(); + let node1_id = node1.id(); let node2 = Node::memory() .bind_random_port() .relay_mode(RelayMode::Custom(relay_map.clone())) @@ -514,8 +514,14 @@ async fn test_sync_via_relay() -> Result<()> { .await?; // remove direct addrs to force connect via relay - ticket.nodes[0].direct_addresses = Default::default(); - + let mut relay_ticket = ticket.nodes[0].clone(); + relay_ticket.addrs = relay_ticket + .addrs + .iter() + .filter(|addr| matches!(addr, iroh::TransportAddr::Relay(_))) + .cloned() + .collect(); + ticket.nodes[0] = relay_ticket; // join let doc2 = node2.docs().import(ticket).await?; let blobs2 = node2.blobs(); @@ -599,7 +605,7 @@ async fn sync_restart_node() -> Result<()> { .node_discovery(discovery_server.discovery(secret_key_1.clone())) .spawn() .await?; - let id1 = node1.node_id(); + let id1 = node1.id(); // create doc & ticket on node1 let doc1 = node1.docs().create().await?; @@ -619,7 +625,7 @@ async fn sync_restart_node() -> Result<()> { .node_discovery(discovery_server.discovery(secret_key_2.clone())) .spawn() .await?; - let id2 = node2.node_id(); + let id2 = node2.id(); let author2 = node2.docs().author_create().await?; let doc2 = node2.docs().import(ticket.clone()).await?; let blobs2 = node2.blobs(); @@ -665,7 +671,7 @@ async fn sync_restart_node() -> Result<()> { .node_discovery(discovery_server.discovery(secret_key_1.clone())) .spawn() .await?; - assert_eq!(id1, node1.node_id()); + assert_eq!(id1, node1.id()); let doc1 = node1.docs().open(doc1.id()).await?.expect("doc to exist"); let blobs1 = node1.blobs(); @@ -874,7 +880,7 @@ async fn sync_big() -> Result<()> { }); let nodes = spawn_nodes(n_nodes, &mut rng).await?; - let node_ids = nodes.iter().map(|node| node.node_id()).collect::>(); + let node_ids = nodes.iter().map(|node| node.id()).collect::>(); let clients = nodes.iter().map(|node| node.client()).collect::>(); let authors = collect_futures(clients.iter().map(|c| c.docs().author_create())).await?; @@ -927,7 +933,7 @@ async fn sync_big() -> Result<()> { // join nodes together for (i, doc) in docs.iter().enumerate().skip(1) { - info!(me = %node_ids[i].fmt_short(), peer = %peer0.node_id.fmt_short(), "join"); + info!(me = %node_ids[i].fmt_short(), peer = %peer0.id.fmt_short(), "join"); doc.start_sync(vec![peer0.clone()]).await?; } diff --git a/tests/util.rs b/tests/util.rs index 26d661bc..f5c844fa 100644 --- a/tests/util.rs +++ b/tests/util.rs @@ -5,7 +5,7 @@ use std::{ path::{Path, PathBuf}, }; -use iroh::{discovery::IntoDiscovery, dns::DnsResolver, NodeId, RelayMode, SecretKey}; +use iroh::{discovery::IntoDiscovery, dns::DnsResolver, EndpointId, RelayMode, SecretKey}; use iroh_blobs::store::fs::options::{GcConfig, Options}; use iroh_docs::{engine::ProtectCallbackHandler, protocol::Docs}; use iroh_gossip::net::Gossip; @@ -87,9 +87,13 @@ impl Builder { } let mut builder = self.endpoint.bind_addr_v4(addr_v4).bind_addr_v6(addr_v6); if self.use_n0_discovery { - builder = builder.discovery_n0(); + builder = builder.discovery(iroh::discovery::pkarr::PkarrPublisher::n0_dns()); + // Resolve using HTTPS requests to our DNS server's /pkarr path in browsers + builder = builder.discovery(iroh::discovery::pkarr::PkarrResolver::n0_dns()); + // Resolve using DNS queries outside browsers. + builder = builder.discovery(iroh::discovery::dns::DnsDiscovery::n0_dns()); } - builder = builder.discovery_n0(); + let endpoint = builder.bind().await?; let mut router = iroh::protocol::Router::builder(endpoint.clone()); let gossip = Gossip::builder().spawn(endpoint.clone()); @@ -181,7 +185,7 @@ impl Builder { fn new(path: Option) -> Self { Self { - endpoint: iroh::Endpoint::builder(), + endpoint: iroh::Endpoint::empty_builder(RelayMode::Disabled), use_n0_discovery: true, path, gc_interval: None, @@ -237,8 +241,8 @@ impl Builder { impl Node { /// Returns the node id - pub fn node_id(&self) -> NodeId { - self.router.endpoint().node_id() + pub fn id(&self) -> EndpointId { + self.router.endpoint().id() } // /// Returns the blob store