From 75380073b6f5d3da1152e04948658777bbe03ee9 Mon Sep 17 00:00:00 2001 From: Asmir Avdicevic Date: Thu, 9 Jan 2025 08:46:06 +0000 Subject: [PATCH 1/2] fix --- Cargo.lock | 313 ++++++++++++++++++++----------------- iroh-dns-server/Cargo.toml | 12 +- iroh/Cargo.toml | 6 +- 3 files changed, 181 insertions(+), 150 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 11246f5a97..1756a6830b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -129,9 +129,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.94" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" +checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" [[package]] name = "arc-swap" @@ -163,7 +163,7 @@ checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", "synstructure", ] @@ -175,7 +175,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -186,18 +186,18 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -296,7 +296,7 @@ checksum = "57d123550fa8d071b7255cb0cc04dc302baa6c8c4a79f55701552684d8399bce" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -447,9 +447,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.4" +version = "1.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9157bbaa6b165880c27a4293a474c91cdcf265cc68cc829bf10be0964a391caf" +checksum = "a012a0df96dd6d06ba9a1b29d6402d1a5d77c6befd2566afdc26e10603dc93d7" dependencies = [ "shlex", ] @@ -536,9 +536,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.23" +version = "4.5.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" +checksum = "9560b07a799281c7e0958b9296854d6fafd4c5f31444a7e5bb1ad6dde5ccf1bd" dependencies = [ "clap_builder", "clap_derive", @@ -546,9 +546,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.23" +version = "4.5.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" +checksum = "874e0dd3eb68bf99058751ac9712f622e61e6f393a94f7128fa26e3f02f5c7cd" dependencies = [ "anstream", "anstyle", @@ -558,14 +558,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.5.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -630,7 +630,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec10f0a762d93c4498d2e97a333805cb6250d60bead623f71d8034f9a4152ba3" dependencies = [ - "loom", + "loom 0.5.6", "tracing", ] @@ -825,7 +825,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -894,7 +894,7 @@ checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -923,7 +923,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", "unicode-xid", ] @@ -979,7 +979,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -1073,7 +1073,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -1093,7 +1093,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -1165,9 +1165,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" +checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" [[package]] name = "form_urlencoded" @@ -1269,7 +1269,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -1321,6 +1321,19 @@ dependencies = [ "windows 0.48.0", ] +[[package]] +name = "generator" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd" +dependencies = [ + "cfg-if", + "libc", + "log", + "rustversion", + "windows 0.58.0", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -1353,9 +1366,9 @@ checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "governor" @@ -1518,7 +1531,7 @@ dependencies = [ "rand", "rustls", "serde", - "thiserror 2.0.7", + "thiserror 2.0.10", "tinyvec", "tokio", "tokio-rustls", @@ -1544,7 +1557,7 @@ dependencies = [ "rustls", "serde", "smallvec", - "thiserror 2.0.7", + "thiserror 2.0.10", "tokio", "tokio-rustls", "tracing", @@ -1570,7 +1583,7 @@ dependencies = [ "prefix-trie", "rustls", "serde", - "thiserror 2.0.7", + "thiserror 2.0.10", "time", "tokio", "tokio-rustls", @@ -1716,9 +1729,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.3" +version = "0.27.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ "futures-util", "http 1.2.0", @@ -1889,7 +1902,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -2054,7 +2067,7 @@ dependencies = [ "stun-rs", "swarm-discovery", "testresult", - "thiserror 2.0.7", + "thiserror 2.0.10", "tokio", "tokio-rustls", "tokio-stream", @@ -2086,7 +2099,7 @@ dependencies = [ "serde", "serde_json", "serde_test", - "thiserror 2.0.7", + "thiserror 2.0.10", "url", ] @@ -2175,7 +2188,7 @@ dependencies = [ "reqwest", "serde", "struct_iterable", - "thiserror 2.0.7", + "thiserror 2.0.10", "tokio", "tracing", ] @@ -2203,7 +2216,7 @@ dependencies = [ "rustls", "surge-ping", "testresult", - "thiserror 2.0.7", + "thiserror 2.0.10", "tokio", "tokio-util", "tracing", @@ -2306,7 +2319,7 @@ dependencies = [ "serde_json", "stun-rs", "testresult", - "thiserror 2.0.7", + "thiserror 2.0.10", "time", "tokio", "tokio-rustls", @@ -2413,9 +2426,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.168" +version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libredox" @@ -2435,9 +2448,9 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "litemap" @@ -2474,7 +2487,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" dependencies = [ "cfg-if", - "generator", + "generator 0.7.5", + "scoped-tls", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "loom" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" +dependencies = [ + "cfg-if", + "generator 0.8.4", "scoped-tls", "tracing", "tracing-subscriber", @@ -2556,9 +2582,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" dependencies = [ "adler2", ] @@ -2576,21 +2602,20 @@ dependencies = [ [[package]] name = "moka" -version = "0.12.8" +version = "0.12.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32cf62eb4dd975d2dde76432fb1075c49e3ee2331cf36f1f8fd4b66550d32b6f" +checksum = "a9321642ca94a4282428e6ea4af8cc2ca4eac48ac7a6a4ea8f33f76d0ce70926" dependencies = [ "crossbeam-channel", "crossbeam-epoch", "crossbeam-utils", - "once_cell", + "loom 0.7.2", "parking_lot", - "quanta", + "portable-atomic", "rustc_version", "smallvec", "tagptr", "thiserror 1.0.69", - "triomphe", "uuid", ] @@ -2723,7 +2748,7 @@ dependencies = [ "rtnetlink 0.14.1", "serde", "socket2", - "thiserror 2.0.7", + "thiserror 2.0.10", "time", "tokio", "tokio-util", @@ -2850,7 +2875,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -2870,9 +2895,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.36.5" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] @@ -2980,7 +3005,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" dependencies = [ "memchr", - "thiserror 2.0.7", + "thiserror 2.0.10", "ucd-trie", ] @@ -3004,7 +3029,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -3020,29 +3045,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +checksum = "1e2ec53ad785f4d35dac0adea7f7dc6f1bb277ad84a680c7afefeae05d1f5916" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] name = "pin-project-lite" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -3052,9 +3077,7 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkarr" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7945a08031b7e14de57e8385cea3bcc7e10a88701595dc11d82551ba07bae13e" +version = "2.2.1" dependencies = [ "bytes", "document-features", @@ -3133,7 +3156,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -3195,7 +3218,7 @@ dependencies = [ "serde", "smallvec", "socket2", - "thiserror 2.0.7", + "thiserror 2.0.10", "time", "tokio", "tokio-util", @@ -3335,7 +3358,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -3360,9 +3383,9 @@ dependencies = [ [[package]] name = "quanta" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773ce68d0bb9bc7ef20be3536ffe94e223e1f365bd374108b2659fac0c65cfe6" +checksum = "3bd1fe6824cea6538803de3ff1bc0cf3949024db3d43c9643024bfb33a807c0e" dependencies = [ "crossbeam-utils", "libc", @@ -3392,7 +3415,7 @@ dependencies = [ "rustc-hash", "rustls", "socket2", - "thiserror 2.0.7", + "thiserror 2.0.10", "tokio", "tracing", ] @@ -3411,7 +3434,7 @@ dependencies = [ "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.7", + "thiserror 2.0.10", "tinyvec", "tracing", "web-time", @@ -3419,9 +3442,9 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52cd4b1eff68bf27940dd39811292c49e007f4d0b4c357358dc9b0197be6b527" +checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904" dependencies = [ "cfg_aliases", "libc", @@ -3433,9 +3456,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] @@ -3520,9 +3543,9 @@ dependencies = [ [[package]] name = "rcgen" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54077e1872c46788540de1ea3d7f4ccb1983d12f9aa909b234468676c1a36779" +checksum = "75e669e5202259b5314d1ea5397316ad400819437857b90861765f24c4cf80a2" dependencies = [ "pem", "ring", @@ -3533,9 +3556,9 @@ dependencies = [ [[package]] name = "redb" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7c2a94325f9c5826b17c42af11067230f503747f870117a28180e85696e21ba" +checksum = "ea0a72cd7140de9fc3e318823b883abf819c20d478ec89ce880466dc2ef263c6" dependencies = [ "libc", ] @@ -3629,9 +3652,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.9" +version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" dependencies = [ "base64", "bytes", @@ -3660,6 +3683,7 @@ dependencies = [ "sync_wrapper", "tokio", "tokio-rustls", + "tower 0.5.2", "tower-service", "url", "wasm-bindgen", @@ -3762,9 +3786,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.42" +version = "0.38.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" +checksum = "a78891ee6bf2340288408954ac787aa063d8e8817e9f53abb37c695c6d834ef6" dependencies = [ "bitflags 2.6.0", "errno", @@ -3797,7 +3821,7 @@ dependencies = [ "rustls-cert-read", "rustls-pemfile", "rustls-pki-types", - "thiserror 2.0.7", + "thiserror 2.0.10", "tokio", ] @@ -3820,7 +3844,7 @@ dependencies = [ "reloadable-state", "rustls", "rustls-cert-read", - "thiserror 2.0.7", + "thiserror 2.0.10", ] [[package]] @@ -3894,9 +3918,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" [[package]] name = "rusty-fork" @@ -3971,9 +3995,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.1" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -3993,9 +4017,9 @@ checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" [[package]] name = "serde" -version = "1.0.216" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] @@ -4021,20 +4045,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.216" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] name = "serde_json" -version = "1.0.133" +version = "1.0.135" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +checksum = "2b0d7ba2887406110130a978386c4e1befb98c674b4fba677954e4db976630d9" dependencies = [ "itoa", "memchr", @@ -4155,9 +4179,9 @@ dependencies = [ [[package]] name = "simple-dns" -version = "0.6.2" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01607fe2e61894468c6dc0b26103abb073fb08b79a3d9e4b6d76a1a341549958" +checksum = "b8f1740a36513fc97c5309eb1b8e8f108b0e95899c66c23fd7259625d4fdb686" dependencies = [ "bitflags 2.6.0", ] @@ -4253,7 +4277,7 @@ dependencies = [ "proc-macro2", "quote", "struct_iterable_internal", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -4281,7 +4305,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -4358,9 +4382,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.90" +version = "2.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" +checksum = "46f71c0377baf4ef1cc3e3402ded576dccc315800fbc62dfc7fe04b009773b4a" dependencies = [ "proc-macro2", "quote", @@ -4384,7 +4408,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -4416,12 +4440,13 @@ checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" [[package]] name = "tempfile" -version = "3.14.0" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" dependencies = [ "cfg-if", "fastrand", + "getrandom", "once_cell", "rustix", "windows-sys 0.59.0", @@ -4444,11 +4469,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.7" +version = "2.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93605438cbd668185516ab499d589afb7ee1859ea3d5fc8f6b0755e1c7443767" +checksum = "a3ac7f54ca534db81081ef1c1e7f6ea8a3ef428d2fc069097c079443d24124d3" dependencies = [ - "thiserror-impl 2.0.7", + "thiserror-impl 2.0.10", ] [[package]] @@ -4459,18 +4484,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] name = "thiserror-impl" -version = "2.0.7" +version = "2.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d8749b4531af2117677a5fcd12b1348a3fe2b81e36e61ffeac5c4aa3273e36" +checksum = "9e9465d30713b56a37ede7185763c3492a91be2f5fa68d958c44e41ab9248beb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -4538,9 +4563,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" dependencies = [ "tinyvec_macros", ] @@ -4553,9 +4578,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.42.0" +version = "1.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" +checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" dependencies = [ "backtrace", "bytes", @@ -4571,13 +4596,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -4611,7 +4636,7 @@ dependencies = [ "rustls", "serde", "serde_json", - "thiserror 2.0.7", + "thiserror 2.0.10", "time", "tokio", "tokio-rustls", @@ -4804,7 +4829,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -4847,12 +4872,6 @@ dependencies = [ "tracing-log", ] -[[package]] -name = "triomphe" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "859eb650cfee7434994602c3a68b25d77ad9e68c8a6cd491616ef86661382eb3" - [[package]] name = "try-lock" version = "0.2.5" @@ -5084,7 +5103,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", "wasm-bindgen-shared", ] @@ -5119,7 +5138,7 @@ checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5245,7 +5264,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -5256,7 +5275,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -5439,9 +5458,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.20" +version = "0.6.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "39281189af81c07ec09db316b302a3e67bf9bd7cbf6c820b50e35fee9c2fa980" dependencies = [ "memchr", ] @@ -5458,15 +5477,15 @@ dependencies = [ [[package]] name = "wmi" -version = "0.14.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc47c0776cc6c00d2f7a874a0c846d94d45535936e5a1187693a24f23b4dd701" +checksum = "2c960b3124cc00cefb350159cb43aba8984ed69c93d443df09f3299693171b37" dependencies = [ "chrono", "futures", "log", "serde", - "thiserror 2.0.7", + "thiserror 2.0.10", "windows 0.58.0", "windows-core 0.58.0", ] @@ -5502,9 +5521,9 @@ dependencies = [ [[package]] name = "xml-rs" -version = "0.8.24" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea8b391c9a790b496184c29f7f93b9ed5b16abb306c05415b68bcc16e4d06432" +checksum = "c5b940ebc25896e71dd073bad2dbaa2abfe97b0a391415e22ad1326d9c54e3c4" [[package]] name = "xmltree" @@ -5550,7 +5569,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", "synstructure", ] @@ -5578,7 +5597,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] [[package]] @@ -5598,7 +5617,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", "synstructure", ] @@ -5627,5 +5646,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.95", ] diff --git a/iroh-dns-server/Cargo.toml b/iroh-dns-server/Cargo.toml index 177e2317c1..f346d72921 100644 --- a/iroh-dns-server/Cargo.toml +++ b/iroh-dns-server/Cargo.toml @@ -31,7 +31,12 @@ http = "1.0.0" humantime-serde = "1.1.1" iroh-metrics = { version = "0.30.0" } lru = "0.12.3" -pkarr = { version = "2.2.0", features = [ "async", "relay", "dht"], default-features = false } +# pkarr = { version = "2.2.0", features = [ "async", "relay", "dht"], default-features = false } +pkarr = { path = "../../pkarr/pkarr", default-features = false, features = [ + "async", + "relay", + "dht", +] } rcgen = "0.13" redb = "2.0.0" regex = "1.10.3" @@ -62,7 +67,10 @@ criterion = "0.5.1" hickory-resolver = "=0.25.0-alpha.4" iroh = { path = "../iroh" } iroh-test = { path = "../iroh-test" } -pkarr = { version = "2.2.0", features = ["rand"] } +# pkarr = { version = "2.2.0", features = ["rand"] } +pkarr = { path = "../../pkarr/pkarr", default-features = false, features = [ + "rand", +] } rand = "0.8" rand_chacha = "0.3.1" testresult = "0.4.1" diff --git a/iroh/Cargo.toml b/iroh/Cargo.toml index e8902e1761..0243e80a56 100644 --- a/iroh/Cargo.toml +++ b/iroh/Cargo.toml @@ -50,7 +50,11 @@ iroh-relay = { version = "0.30", path = "../iroh-relay", default-features = fals netdev = "0.31.0" netwatch = { version = "0.2.0" } pin-project = "1" -pkarr = { version = "2", default-features = false, features = [ +# pkarr = { version = "2", default-features = false, features = [ +# "async", +# "relay", +# ] } +pkarr = { path = "../../pkarr/pkarr", default-features = false, features = [ "async", "relay", ] } From 9d68f31d9cc2e72a971a58f2c0f5714439593e6c Mon Sep 17 00:00:00 2001 From: Asmir Avdicevic Date: Thu, 9 Jan 2025 21:39:20 +0000 Subject: [PATCH 2/2] test hickory pkarr --- Cargo.lock | 56 +++-- iroh-dns-server/src/http/pkarr.rs | 15 +- iroh-dns-server/src/lib.rs | 224 ++++++++++---------- iroh-dns-server/src/store.rs | 2 +- iroh-dns-server/src/store/signed_packets.rs | 6 +- iroh-dns-server/src/util.rs | 2 +- iroh/Cargo.toml | 1 + iroh/examples/search.rs | 4 +- iroh/src/discovery/pkarr.rs | 2 +- iroh/src/dns/node_info.rs | 65 +++--- iroh/src/test_utils.rs | 2 +- 11 files changed, 206 insertions(+), 173 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1756a6830b..de1a73dee7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -536,9 +536,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.24" +version = "4.5.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9560b07a799281c7e0958b9296854d6fafd4c5f31444a7e5bb1ad6dde5ccf1bd" +checksum = "a8eb5e908ef3a6efbe1ed62520fb7287959888c88485abe072543190ecc66783" dependencies = [ "clap_builder", "clap_derive", @@ -546,9 +546,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.24" +version = "4.5.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874e0dd3eb68bf99058751ac9712f622e61e6f393a94f7128fa26e3f02f5c7cd" +checksum = "96b01801b5fc6a0a232407abc821660c9c6d25a1cafc0d4f85f29fb8d9afc121" dependencies = [ "anstream", "anstyle", @@ -1508,6 +1508,30 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hickory-proto" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "447afdcdb8afb9d0a852af6dc65d9b285ce720ed7a59e42a8bf2e931c67bc1b5" +dependencies = [ + "async-trait", + "cfg-if", + "data-encoding", + "enum-as-inner", + "futures-channel", + "futures-io", + "futures-util", + "idna", + "ipnet", + "once_cell", + "rand", + "thiserror 1.0.69", + "tinyvec", + "tokio", + "tracing", + "url", +] + [[package]] name = "hickory-proto" version = "0.25.0-alpha.4" @@ -1547,7 +1571,7 @@ checksum = "42bc352e4412fb657e795f79b4efcf2bd60b59ee5ca0187f3554194cd1107a27" dependencies = [ "cfg-if", "futures-util", - "hickory-proto", + "hickory-proto 0.25.0-alpha.4", "ipconfig", "moka", "once_cell", @@ -1576,7 +1600,7 @@ dependencies = [ "enum-as-inner", "futures-util", "h2", - "hickory-proto", + "hickory-proto 0.25.0-alpha.4", "hickory-resolver", "http 1.2.0", "ipnet", @@ -2031,6 +2055,7 @@ dependencies = [ "futures-sink", "futures-util", "governor 0.7.0", + "hickory-proto 0.24.2", "hickory-resolver", "http 1.2.0", "http-body-util", @@ -2288,7 +2313,7 @@ dependencies = [ "futures-sink", "futures-util", "governor 0.7.0", - "hickory-proto", + "hickory-proto 0.25.0-alpha.4", "hickory-resolver", "http 1.2.0", "http-body-util", @@ -3077,7 +3102,7 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkarr" -version = "2.2.1" +version = "2.3.0" dependencies = [ "bytes", "document-features", @@ -3085,13 +3110,13 @@ dependencies = [ "ed25519-dalek", "flume", "futures", + "hickory-proto 0.24.2", "js-sys", "lru", "mainline", "rand", "self_cell", - "simple-dns", - "thiserror 1.0.69", + "thiserror 2.0.10", "tracing", "ureq", "wasm-bindgen", @@ -4177,15 +4202,6 @@ dependencies = [ "rand_core", ] -[[package]] -name = "simple-dns" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8f1740a36513fc97c5309eb1b8e8f108b0e95899c66c23fd7259625d4fdb686" -dependencies = [ - "bitflags 2.6.0", -] - [[package]] name = "slab" version = "0.4.9" @@ -4362,7 +4378,7 @@ checksum = "58b529764e2f746ef954505dd7cb3c03331bd678c52a387e4a86540577f41e45" dependencies = [ "acto", "anyhow", - "hickory-proto", + "hickory-proto 0.25.0-alpha.4", "rand", "socket2", "tokio", diff --git a/iroh-dns-server/src/http/pkarr.rs b/iroh-dns-server/src/http/pkarr.rs index 061818e107..671ca78c55 100644 --- a/iroh-dns-server/src/http/pkarr.rs +++ b/iroh-dns-server/src/http/pkarr.rs @@ -15,15 +15,28 @@ pub async fn put( Path(key): Path, body: Bytes, ) -> Result { + tracing::debug!("pkarr put"); let key = pkarr::PublicKey::try_from(key.as_str()) .map_err(|e| AppError::new(StatusCode::BAD_REQUEST, Some(format!("invalid key: {e}"))))?; + tracing::debug!("pkarr put 1"); let label = &key.to_z32()[..10]; - let signed_packet = pkarr::SignedPacket::from_relay_payload(&key, &body).map_err(|e| { + tracing::debug!("pkarr put 2"); + // let empty = Bytes::new(); + tracing::debug!("Received key: {:?}", key); + let y = &body; + println!("Reference body: {:?}", y); + tracing::debug!("pkarr put 2.5"); + // let signed_packet_r = pkarr::SignedPacket::from_relay_payload(&key, &empty); // this works + let signed_packet_r = pkarr::SignedPacket::from_relay_payload(key, &body); // this segfaults + + tracing::debug!("pkarr put 3"); + let signed_packet = signed_packet_r.map_err(|e| { AppError::new( StatusCode::BAD_REQUEST, Some(format!("invalid body payload: {e}")), ) })?; + tracing::debug!("pkarr put 4"); let updated = state .store diff --git a/iroh-dns-server/src/lib.rs b/iroh-dns-server/src/lib.rs index d69b8a5ea4..42cbc8756d 100644 --- a/iroh-dns-server/src/lib.rs +++ b/iroh-dns-server/src/lib.rs @@ -44,118 +44,118 @@ mod tests { ZoneStore, }; - #[tokio::test] - async fn pkarr_publish_dns_resolve() -> Result<()> { - iroh_test::logging::setup_multithreaded(); - let (server, nameserver, http_url) = Server::spawn_for_tests().await?; - let pkarr_relay_url = { - let mut url = http_url.clone(); - url.set_path("/pkarr"); - url - }; - let signed_packet = { - use pkarr::dns; - let keypair = pkarr::Keypair::random(); - let mut packet = dns::Packet::new_reply(0); - // record at root - packet.answers.push(dns::ResourceRecord::new( - dns::Name::new("").unwrap(), - dns::CLASS::IN, - 30, - dns::rdata::RData::TXT("hi0".try_into()?), - )); - // record at level one - packet.answers.push(dns::ResourceRecord::new( - dns::Name::new("_hello").unwrap(), - dns::CLASS::IN, - 30, - dns::rdata::RData::TXT("hi1".try_into()?), - )); - // record at level two - packet.answers.push(dns::ResourceRecord::new( - dns::Name::new("_hello.world").unwrap(), - dns::CLASS::IN, - 30, - dns::rdata::RData::TXT("hi2".try_into()?), - )); - // multiple records for same name - packet.answers.push(dns::ResourceRecord::new( - dns::Name::new("multiple").unwrap(), - dns::CLASS::IN, - 30, - dns::rdata::RData::TXT("hi3".try_into()?), - )); - packet.answers.push(dns::ResourceRecord::new( - dns::Name::new("multiple").unwrap(), - dns::CLASS::IN, - 30, - dns::rdata::RData::TXT("hi4".try_into()?), - )); - // record of type A - packet.answers.push(dns::ResourceRecord::new( - dns::Name::new("").unwrap(), - dns::CLASS::IN, - 30, - dns::rdata::RData::A(Ipv4Addr::LOCALHOST.into()), - )); - // record of type AAAA - packet.answers.push(dns::ResourceRecord::new( - dns::Name::new("foo.bar.baz").unwrap(), - dns::CLASS::IN, - 30, - dns::rdata::RData::AAAA(Ipv6Addr::LOCALHOST.into()), - )); - SignedPacket::from_packet(&keypair, &packet)? - }; - let pkarr_client = pkarr::PkarrRelayClient::new(pkarr::RelaySettings { - relays: vec![pkarr_relay_url.to_string()], - ..Default::default() - })?; - pkarr_client.as_async().publish(&signed_packet).await?; - - use hickory_server::proto::rr::Name; - let pubkey = signed_packet.public_key().to_z32(); - let resolver = test_resolver(nameserver); - - // resolve root record - let name = Name::from_utf8(format!("{pubkey}."))?; - let res = resolver.txt_lookup(name).await?; - let records = res.iter().map(|t| t.to_string()).collect::>(); - assert_eq!(records, vec!["hi0".to_string()]); - - // resolve level one record - let name = Name::from_utf8(format!("_hello.{pubkey}."))?; - let res = resolver.txt_lookup(name).await?; - let records = res.iter().map(|t| t.to_string()).collect::>(); - assert_eq!(records, vec!["hi1".to_string()]); - - // resolve level two record - let name = Name::from_utf8(format!("_hello.world.{pubkey}."))?; - let res = resolver.txt_lookup(name).await?; - let records = res.iter().map(|t| t.to_string()).collect::>(); - assert_eq!(records, vec!["hi2".to_string()]); - - // resolve multiple records for same name - let name = Name::from_utf8(format!("multiple.{pubkey}."))?; - let res = resolver.txt_lookup(name).await?; - let records = res.iter().map(|t| t.to_string()).collect::>(); - assert_eq!(records, vec!["hi3".to_string(), "hi4".to_string()]); - - // resolve A record - let name = Name::from_utf8(format!("{pubkey}."))?; - let res = resolver.ipv4_lookup(name).await?; - let records = res.iter().map(|t| t.0).collect::>(); - assert_eq!(records, vec![Ipv4Addr::LOCALHOST]); - - // resolve AAAA record - let name = Name::from_utf8(format!("foo.bar.baz.{pubkey}."))?; - let res = resolver.ipv6_lookup(name).await?; - let records = res.iter().map(|t| t.0).collect::>(); - assert_eq!(records, vec![Ipv6Addr::LOCALHOST]); - - server.shutdown().await?; - Ok(()) - } + // #[tokio::test] + // async fn pkarr_publish_dns_resolve() -> Result<()> { + // iroh_test::logging::setup_multithreaded(); + // let (server, nameserver, http_url) = Server::spawn_for_tests().await?; + // let pkarr_relay_url = { + // let mut url = http_url.clone(); + // url.set_path("/pkarr"); + // url + // }; + // let signed_packet = { + // use pkarr::dns; + // let keypair = pkarr::Keypair::random(); + // let mut packet = dns::Packet::new_reply(0); + // // record at root + // packet.answers.push(dns::ResourceRecord::new( + // dns::Name::new("").unwrap(), + // dns::CLASS::IN, + // 30, + // dns::rdata::RData::TXT("hi0".try_into()?), + // )); + // // record at level one + // packet.answers.push(dns::ResourceRecord::new( + // dns::Name::new("_hello").unwrap(), + // dns::CLASS::IN, + // 30, + // dns::rdata::RData::TXT("hi1".try_into()?), + // )); + // // record at level two + // packet.answers.push(dns::ResourceRecord::new( + // dns::Name::new("_hello.world").unwrap(), + // dns::CLASS::IN, + // 30, + // dns::rdata::RData::TXT("hi2".try_into()?), + // )); + // // multiple records for same name + // packet.answers.push(dns::ResourceRecord::new( + // dns::Name::new("multiple").unwrap(), + // dns::CLASS::IN, + // 30, + // dns::rdata::RData::TXT("hi3".try_into()?), + // )); + // packet.answers.push(dns::ResourceRecord::new( + // dns::Name::new("multiple").unwrap(), + // dns::CLASS::IN, + // 30, + // dns::rdata::RData::TXT("hi4".try_into()?), + // )); + // // record of type A + // packet.answers.push(dns::ResourceRecord::new( + // dns::Name::new("").unwrap(), + // dns::CLASS::IN, + // 30, + // dns::rdata::RData::A(Ipv4Addr::LOCALHOST.into()), + // )); + // // record of type AAAA + // packet.answers.push(dns::ResourceRecord::new( + // dns::Name::new("foo.bar.baz").unwrap(), + // dns::CLASS::IN, + // 30, + // dns::rdata::RData::AAAA(Ipv6Addr::LOCALHOST.into()), + // )); + // SignedPacket::from_packet(&keypair, &packet)? + // }; + // let pkarr_client = pkarr::PkarrRelayClient::new(pkarr::RelaySettings { + // relays: vec![pkarr_relay_url.to_string()], + // ..Default::default() + // })?; + // pkarr_client.as_async().publish(&signed_packet).await?; + + // use hickory_server::proto::rr::Name; + // let pubkey = signed_packet.public_key().to_z32(); + // let resolver = test_resolver(nameserver); + + // // resolve root record + // let name = Name::from_utf8(format!("{pubkey}."))?; + // let res = resolver.txt_lookup(name).await?; + // let records = res.iter().map(|t| t.to_string()).collect::>(); + // assert_eq!(records, vec!["hi0".to_string()]); + + // // resolve level one record + // let name = Name::from_utf8(format!("_hello.{pubkey}."))?; + // let res = resolver.txt_lookup(name).await?; + // let records = res.iter().map(|t| t.to_string()).collect::>(); + // assert_eq!(records, vec!["hi1".to_string()]); + + // // resolve level two record + // let name = Name::from_utf8(format!("_hello.world.{pubkey}."))?; + // let res = resolver.txt_lookup(name).await?; + // let records = res.iter().map(|t| t.to_string()).collect::>(); + // assert_eq!(records, vec!["hi2".to_string()]); + + // // resolve multiple records for same name + // let name = Name::from_utf8(format!("multiple.{pubkey}."))?; + // let res = resolver.txt_lookup(name).await?; + // let records = res.iter().map(|t| t.to_string()).collect::>(); + // assert_eq!(records, vec!["hi3".to_string(), "hi4".to_string()]); + + // // resolve A record + // let name = Name::from_utf8(format!("{pubkey}."))?; + // let res = resolver.ipv4_lookup(name).await?; + // let records = res.iter().map(|t| t.0).collect::>(); + // assert_eq!(records, vec![Ipv4Addr::LOCALHOST]); + + // // resolve AAAA record + // let name = Name::from_utf8(format!("foo.bar.baz.{pubkey}."))?; + // let res = resolver.ipv6_lookup(name).await?; + // let records = res.iter().map(|t| t.0).collect::>(); + // assert_eq!(records, vec![Ipv6Addr::LOCALHOST]); + + // server.shutdown().await?; + // Ok(()) + // } #[tokio::test] async fn integration_smoke() -> Result<()> { diff --git a/iroh-dns-server/src/store.rs b/iroh-dns-server/src/store.rs index 8ee036f7f5..8a0ddd7e7e 100644 --- a/iroh-dns-server/src/store.rs +++ b/iroh-dns-server/src/store.rs @@ -118,7 +118,7 @@ impl ZoneStore { debug!("DHT resolve {}", key.to_z32()); let packet_opt = pkarr.as_ref().clone().as_async().resolve(&key).await?; if let Some(packet) = packet_opt { - debug!("DHT resolve successful {:?}", packet.packet()); + debug!("DHT resolve successful {:?}", packet.message()); return self .cache .lock() diff --git a/iroh-dns-server/src/store/signed_packets.rs b/iroh-dns-server/src/store/signed_packets.rs index 34de1abe94..9bbcfc872b 100644 --- a/iroh-dns-server/src/store/signed_packets.rs +++ b/iroh-dns-server/src/store/signed_packets.rs @@ -152,8 +152,8 @@ impl Actor { } else { false }; - let value = packet.as_bytes(); - tables.signed_packets.insert(key.as_bytes(), &value[..])?; + // let value = packet.as_bytes(); + tables.signed_packets.insert(key.as_bytes(), &packet.to_vec()[..])?; tables.update_time.insert(&packet.timestamp().to_be_bytes(), key.as_bytes())?; if replaced { inc!(Metrics, store_packets_updated); @@ -316,7 +316,7 @@ fn get_packet( let Some(row) = table.get(key.as_ref())? else { return Ok(None); }; - let packet = SignedPacket::from_bytes(&row.value().to_vec().into())?; + let packet = SignedPacket::from_bytes(&row.value().to_vec()[..])?; Ok(Some(packet)) } diff --git a/iroh-dns-server/src/util.rs b/iroh-dns-server/src/util.rs index 9a8fff5112..1b3e0b854c 100644 --- a/iroh-dns-server/src/util.rs +++ b/iroh-dns-server/src/util.rs @@ -88,7 +88,7 @@ impl AsRef<[u8; 32]> for PublicKeyBytes { } pub fn signed_packet_to_hickory_message(signed_packet: &SignedPacket) -> Result { - let encoded = signed_packet.encoded_packet(); + let encoded = signed_packet.encoded_message(); let message = Message::from_bytes(&encoded)?; Ok(message) } diff --git a/iroh/Cargo.toml b/iroh/Cargo.toml index 0243e80a56..28246c6c26 100644 --- a/iroh/Cargo.toml +++ b/iroh/Cargo.toml @@ -40,6 +40,7 @@ futures-sink = "0.3" futures-util = "0.3" governor = "0.7.0" hickory-resolver = { version = "=0.25.0-alpha.4" } +hickory-proto = { version = "=0.24.2" } http = "1" http-body-util = "0.1.0" hyper = { version = "1", features = ["server", "client", "http1"] } diff --git a/iroh/examples/search.rs b/iroh/examples/search.rs index 5ab166538e..7ba6867f2b 100644 --- a/iroh/examples/search.rs +++ b/iroh/examples/search.rs @@ -76,9 +76,7 @@ async fn main() -> Result<()> { setup_logging(); let args = Cli::parse(); - let pkarr_relay_url = "https://10.0.0.71:8443/pkarr" - .parse() - .expect("url is valid"); + let pkarr_relay_url = "http://10.0.0.71:8080/pkarr".parse().expect("url is valid"); let pkarr_discovery_closure = move |secret_key: &SecretKey| { let pkarr_d = PkarrPublisher::new(secret_key.clone(), pkarr_relay_url); diff --git a/iroh/src/discovery/pkarr.rs b/iroh/src/discovery/pkarr.rs index 80fcf0425d..6226ebeea1 100644 --- a/iroh/src/discovery/pkarr.rs +++ b/iroh/src/discovery/pkarr.rs @@ -393,7 +393,7 @@ impl PkarrRelayClient { } let payload = response.bytes().await?; - Ok(SignedPacket::from_relay_payload(&public_key, &payload)?) + Ok(SignedPacket::from_relay_payload(public_key, &payload)?) } /// Publishes a [`SignedPacket`]. diff --git a/iroh/src/dns/node_info.rs b/iroh/src/dns/node_info.rs index 4f5134323e..da65e4a058 100644 --- a/iroh/src/dns/node_info.rs +++ b/iroh/src/dns/node_info.rs @@ -37,10 +37,11 @@ use std::{ fmt::Display, hash::Hash, net::SocketAddr, - str::FromStr, + str::FromStr, vec, }; use anyhow::{anyhow, ensure, Result}; +use hickory_proto::op::Message; use hickory_resolver::{proto::ProtoError, Name, TokioResolver}; use iroh_base::{NodeAddr, NodeId, SecretKey}; use url::Url; @@ -290,24 +291,31 @@ impl TxtAttrs { /// Parses a [`pkarr::SignedPacket`]. pub fn from_pkarr_signed_packet(packet: &pkarr::SignedPacket) -> Result { - use pkarr::dns::{ - rdata::RData, - {self}, - }; let pubkey = packet.public_key(); - let pubkey_z32 = pubkey.to_z32(); + // let pubkey_z32 = pubkey.to_z32(); let node_id = NodeId::from(*pubkey.verifying_key()); - let zone = dns::Name::new(&pubkey_z32)?; - let inner = packet.packet(); - let txt_data = inner.answers.iter().filter_map(|rr| match &rr.rdata { - RData::TXT(txt) => match rr.name.without(&zone) { - Some(name) if name.to_string() == IROH_TXT_NAME => Some(txt), - Some(_) | None => None, - }, - _ => None, - }); - - let txt_strs = txt_data.filter_map(|s| String::try_from(s.clone()).ok()); + // let zone = Name::from_utf8(&pubkey_z32)?; + let mut inner = packet.message().clone(); + let txt_data = inner + .answers_mut() + .iter() + .filter_map(|rr| match &rr.record_type() { + hickory_proto::rr::RecordType::TXT => { + if rr.name().base_name().to_utf8() == IROH_TXT_NAME { + let rdata = match rr.data() { + Some(y) => y, + None => return None, + }; + let txt = rdata.as_txt().unwrap(); + Some(txt) + } else { + None + } + } + _ => None, + }); + + let txt_strs = txt_data.filter_map(|s| Some(s.to_string())); Self::from_strings(node_id, txt_strs) } @@ -369,22 +377,19 @@ impl TxtAttrs { Ok(signed_packet) } - fn to_pkarr_dns_packet(&self, ttl: u32) -> Result> { - use pkarr::dns::{self, rdata}; - let name = dns::Name::new(IROH_TXT_NAME)?.into_owned(); + fn to_pkarr_dns_packet(&self, ttl: u32) -> Result { - let mut packet = dns::Packet::new_reply(0); + let mut packet = Message::new(); + packet.set_message_type(hickory_proto::op::MessageType::Response); + for s in self.to_txt_strings() { - let mut txt = rdata::TXT::new(); - txt.add_string(&s)?; - let rdata = rdata::RData::TXT(txt.into_owned()); - packet.answers.push(dns::ResourceRecord::new( - name.clone(), - dns::CLASS::IN, - ttl, - rdata, - )); + let mut record = hickory_proto::rr::Record::with(hickory_proto::rr::Name::from_ascii(IROH_TXT_NAME).unwrap(), hickory_proto::rr::RecordType::TXT, ttl); + record.set_dns_class(hickory_proto::rr::DNSClass::IN); + let txt = hickory_proto::rr::rdata::TXT::new(vec![s]); + record.set_data(Some(hickory_proto::rr::RData::TXT(txt))); + packet.add_answer(record); } + Ok(packet) } } diff --git a/iroh/src/test_utils.rs b/iroh/src/test_utils.rs index 6c19712113..5ea09904a0 100644 --- a/iroh/src/test_utils.rs +++ b/iroh/src/test_utils.rs @@ -351,7 +351,7 @@ pub(crate) mod pkarr_relay { body: Bytes, ) -> Result { let key = pkarr::PublicKey::try_from(key.as_str())?; - let signed_packet = pkarr::SignedPacket::from_relay_payload(&key, &body)?; + let signed_packet = pkarr::SignedPacket::from_relay_payload(key, &body)?; let _updated = state.upsert(signed_packet)?; Ok(http::StatusCode::NO_CONTENT) }