diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 40d26b1b..baa9e814 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -16,7 +16,7 @@ env: RUST_BACKTRACE: 1 RUSTFLAGS: -Dwarnings RUSTDOCFLAGS: -Dwarnings - MSRV: "1.81" + MSRV: "1.85" SCCACHE_CACHE_SIZE: "10G" IROH_FORCE_STAGING_RELAYS: "1" diff --git a/Cargo.lock b/Cargo.lock index f16dad54..f2cf9cd8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13,9 +13,9 @@ dependencies = [ [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aho-corasick" @@ -61,7 +61,7 @@ checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -92,15 +92,15 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", "cfg-if", @@ -108,7 +108,7 @@ dependencies = [ "miniz_oxide", "object", "rustc-demangle", - "windows-targets 0.52.6", + "windows-targets", ] [[package]] @@ -128,21 +128,15 @@ dependencies = [ [[package]] name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.9.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "byteorder" @@ -158,18 +152,18 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "cc" -version = "1.2.19" +version = "1.2.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e3a13707ac958681c13b39b458c073d0d9bc8a22cb1b2f4c8e55eb72c13f362" +checksum = "5c1599538de2394445747c8cf7935946e3cc27e9625f889d979bfb2aaf569362" dependencies = [ "shlex", ] [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" [[package]] name = "cfg_aliases" @@ -179,9 +173,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.40" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ "android-tzdata", "iana-time-zone", @@ -201,9 +195,9 @@ dependencies = [ [[package]] name = "cordyceps" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0392f465ceba1713d30708f61c160ebf4dc1cf86bb166039d16b11ad4f3b5b6" +checksum = "688d7fbb8092b8de775ef2536f36c8c31f2bc4006ece2e8d8ad2d17d00ce0a2a" dependencies = [ "loom", "tracing", @@ -246,7 +240,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" dependencies = [ - "derive_more-impl", + "derive_more-impl 1.0.0", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl 2.0.1", ] [[package]] @@ -257,7 +260,19 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", + "unicode-xid", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", "unicode-xid", ] @@ -275,7 +290,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -410,7 +425,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -445,33 +460,23 @@ dependencies = [ [[package]] name = "generator" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd" +checksum = "d18470a76cb7f8ff746cf1f7470914f900252ec36bbc40b569d74b1258446827" dependencies = [ + "cc", "cfg-if", "libc", "log", "rustversion", - "windows 0.58.0", -] - -[[package]] -name = "getrandom" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "windows", ] [[package]] name = "getrandom" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", "libc", @@ -653,9 +658,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75249d144030531f8dee69fe9cea04d3edf809a017ae445e2abdff6629e86633" +checksum = "17da50a276f1e01e0ba6c029e47b7100754904ee8a278f886546e98575380785" dependencies = [ "atomic-waker", "bytes", @@ -681,15 +686,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" - -[[package]] -name = "hashbrown" -version = "0.15.2" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" [[package]] name = "heapless" @@ -784,19 +783,20 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.11" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2" +checksum = "7f66d5bd4c6f02bf0542fad85d626775bab9258cf795a4256dcaf3161114d1df" dependencies = [ "bytes", "futures-channel", + "futures-core", "futures-util", "http 1.3.1", "http-body", "hyper", "libc", "pin-project-lite", - "socket2", + "socket2 0.5.10", "tokio", "tower-service", "tracing", @@ -814,7 +814,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.61.0", + "windows-core", ] [[package]] @@ -828,21 +828,22 @@ dependencies = [ [[package]] name = "icu_collections" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ "displaydoc", + "potential_utf", "yoke", "zerofrom", "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_core" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ "displaydoc", "litemap", @@ -851,31 +852,11 @@ dependencies = [ "zerovec", ] -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" - [[package]] name = "icu_normalizer" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ "displaydoc", "icu_collections", @@ -883,67 +864,54 @@ dependencies = [ "icu_properties", "icu_provider", "smallvec", - "utf16_iter", - "utf8_iter", - "write16", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] name = "icu_properties" -version = "1.5.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" dependencies = [ "displaydoc", "icu_collections", - "icu_locid_transform", + "icu_locale_core", "icu_properties_data", "icu_provider", - "tinystr", + "potential_utf", + "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "1.5.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" [[package]] name = "icu_provider" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" dependencies = [ "displaydoc", - "icu_locid", - "icu_provider_macros", + "icu_locale_core", "stable_deref_trait", "tinystr", "writeable", "yoke", "zerofrom", + "zerotrie", "zerovec", ] -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.100", -] - [[package]] name = "idna" version = "1.0.3" @@ -957,9 +925,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ "icu_normalizer", "icu_properties", @@ -980,7 +948,7 @@ dependencies = [ "hyper", "hyper-util", "log", - "rand 0.9.0", + "rand", "tokio", "url", "xmltree", @@ -988,12 +956,23 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown", +] + +[[package]] +name = "io-uring" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013" +dependencies = [ + "bitflags", + "cfg-if", + "libc", ] [[package]] @@ -1025,7 +1004,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -1037,7 +1016,7 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2", + "socket2 0.5.10", "tracing", "windows-sys 0.59.0", ] @@ -1066,15 +1045,15 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.172" +version = "0.2.174" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] name = "litemap" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "lock_api" @@ -1116,9 +1095,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "minicov" @@ -1132,22 +1111,22 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", ] [[package]] @@ -1157,7 +1136,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7bb0e5d99e681ab3c938842b96fcb41bf8a7bb4bfdb11ccbd653a7e83e06c794" dependencies = [ "cfg_aliases", - "derive_more", + "derive_more 1.0.0", "futures-buffered", "futures-lite", "futures-util", @@ -1177,7 +1156,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f216d4ebc5fcf9548244803cbb93f488a2ae160feba3706cd17040d69cf7a368" dependencies = [ - "derive_more", + "derive_more 1.0.0", "n0-future", "snafu", ] @@ -1196,19 +1175,19 @@ dependencies = [ [[package]] name = "netdev" -version = "0.31.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f901362e84cd407be6f8cd9d3a46bccf09136b095792785401ea7d283c79b91d" +checksum = "862209dce034f82a44c95ce2b5183730d616f2a68746b9c1959aa2572e77c0a1" dependencies = [ "dlopen2", "ipnet", "libc", "netlink-packet-core", - "netlink-packet-route 0.17.1", + "netlink-packet-route 0.22.0", "netlink-sys", "once_cell", "system-configuration", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1224,26 +1203,27 @@ dependencies = [ [[package]] name = "netlink-packet-route" -version = "0.17.1" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053998cea5a306971f88580d0829e90f270f940befd7cf928da179d4187a5a66" +checksum = "fc0e7987b28514adf555dc1f9a5c30dfc3e50750bbaffb1aec41ca7b23dcd8e4" dependencies = [ "anyhow", - "bitflags 1.3.2", + "bitflags", "byteorder", "libc", + "log", "netlink-packet-core", "netlink-packet-utils", ] [[package]] name = "netlink-packet-route" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0800eae8638a299eaa67476e1c6b6692922273e0f7939fd188fc861c837b9cd2" +checksum = "56d83370a96813d7c977f8b63054f1162df6e5784f1c598d689236564fb5a6f2" dependencies = [ "anyhow", - "bitflags 2.9.0", + "bitflags", "byteorder", "libc", "log", @@ -1297,7 +1277,7 @@ dependencies = [ "atomic-waker", "bytes", "cfg_aliases", - "derive_more", + "derive_more 2.0.1", "iroh-quinn-udp", "js-sys", "libc", @@ -1306,13 +1286,13 @@ dependencies = [ "nested_enum_utils", "netdev", "netlink-packet-core", - "netlink-packet-route 0.23.0", + "netlink-packet-route 0.24.0", "netlink-proto", "netlink-sys", "pin-project-lite", "serde", "snafu", - "socket2", + "socket2 0.6.0", "testresult", "time", "tokio", @@ -1322,8 +1302,8 @@ dependencies = [ "tracing-subscriber-wasm", "wasm-bindgen-test", "web-sys", - "windows 0.59.0", - "windows-result 0.3.2", + "windows", + "windows-result", "wmi", ] @@ -1387,23 +1367,24 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" dependencies = [ "num_enum_derive", + "rustversion", ] [[package]] name = "num_enum_derive" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -1462,7 +1443,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -1483,7 +1464,7 @@ version = "0.6.1" dependencies = [ "base64", "bytes", - "derive_more", + "derive_more 2.0.1", "futures-lite", "futures-util", "hyper-util", @@ -1494,12 +1475,12 @@ dependencies = [ "netwatch", "ntest", "num_enum", - "rand 0.8.5", - "rand_chacha 0.3.1", + "rand", + "rand_chacha", "serde", "smallvec", "snafu", - "socket2", + "socket2 0.6.0", "time", "tokio", "tokio-util", @@ -1521,6 +1502,15 @@ dependencies = [ "serde", ] +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -1565,40 +1555,18 @@ dependencies = [ [[package]] name = "r-efi" -version = "5.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" - -[[package]] -name = "rand" -version = "0.8.5" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "rand" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.3", - "zerocopy", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", + "rand_chacha", + "rand_core", ] [[package]] @@ -1608,16 +1576,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.3", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.15", + "rand_core", ] [[package]] @@ -1626,7 +1585,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.2", + "getrandom", ] [[package]] @@ -1675,9 +1634,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" [[package]] name = "rustc_version" @@ -1690,9 +1649,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" [[package]] name = "ryu" @@ -1761,7 +1720,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -1805,27 +1764,24 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.2" +version = "1.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" dependencies = [ "libc", ] [[package]] name = "slab" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" [[package]] name = "smallvec" -version = "1.15.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "snafu" @@ -1845,19 +1801,29 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "socket2" -version = "0.5.9" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", ] +[[package]] +name = "socket2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + [[package]] name = "spin" version = "0.9.8" @@ -1886,9 +1852,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.100" +version = "2.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" dependencies = [ "proc-macro2", "quote", @@ -1897,13 +1863,13 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -1912,7 +1878,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.9.0", + "bitflags", "core-foundation", "system-configuration-sys", ] @@ -1959,7 +1925,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -1970,17 +1936,16 @@ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ "cfg-if", - "once_cell", ] [[package]] @@ -2004,9 +1969,9 @@ checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" [[package]] name = "tinystr" -version = "0.7.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" dependencies = [ "displaydoc", "zerovec", @@ -2014,17 +1979,19 @@ dependencies = [ [[package]] name = "tokio" -version = "1.44.2" +version = "1.46.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" +checksum = "0cc3a2344dafbe23a245241fe8b09735b521110d30fcefbbd5feb1797ca35d17" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", "mio", "pin-project-lite", "signal-hook-registry", - "socket2", + "slab", + "socket2 0.5.10", "tokio-macros", "windows-sys 0.52.0", ] @@ -2037,35 +2004,35 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "tokio-util" -version = "0.7.14" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" dependencies = [ "bytes", "futures-core", "futures-sink", "futures-util", - "hashbrown 0.14.5", + "hashbrown", "pin-project-lite", "tokio", ] [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" [[package]] name = "toml_edit" -version = "0.22.24" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ "indexmap", "toml_datetime", @@ -2098,20 +2065,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", "valuable", @@ -2187,12 +2154,6 @@ dependencies = [ "serde", ] -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - [[package]] name = "utf8_iter" version = "1.0.4" @@ -2226,9 +2187,9 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" @@ -2261,7 +2222,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", "wasm-bindgen-shared", ] @@ -2296,7 +2257,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2331,7 +2292,7 @@ checksum = "17d5042cc5fa009658f9a7333ef24291b1291a25b6382dd68862a7f3b969f69b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -2387,83 +2348,48 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" -dependencies = [ - "windows-core 0.58.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f919aee0a93304be7f62e8e5027811bbba96bcb1de84d6618be56e43f8a32a1" -dependencies = [ - "windows-core 0.59.0", - "windows-targets 0.53.0", -] - -[[package]] -name = "windows-core" -version = "0.58.0" +version = "0.61.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ - "windows-implement 0.58.0", - "windows-interface 0.58.0", - "windows-result 0.2.0", - "windows-strings 0.1.0", - "windows-targets 0.52.6", + "windows-collections", + "windows-core", + "windows-future", + "windows-link", + "windows-numerics", ] [[package]] -name = "windows-core" -version = "0.59.0" +name = "windows-collections" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "810ce18ed2112484b0d4e15d022e5f598113e220c53e373fb31e67e21670c1ce" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" dependencies = [ - "windows-implement 0.59.0", - "windows-interface 0.59.1", - "windows-result 0.3.2", - "windows-strings 0.3.1", - "windows-targets 0.53.0", + "windows-core", ] [[package]] name = "windows-core" -version = "0.61.0" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ - "windows-implement 0.60.0", - "windows-interface 0.59.1", + "windows-implement", + "windows-interface", "windows-link", - "windows-result 0.3.2", - "windows-strings 0.4.0", + "windows-result", + "windows-strings", ] [[package]] -name = "windows-implement" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.100", -] - -[[package]] -name = "windows-implement" -version = "0.59.0" +name = "windows-future" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83577b051e2f49a058c308f17f273b570a6a758386fc291b5f6a934dd84e48c1" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.100", + "windows-core", + "windows-link", + "windows-threading", ] [[package]] @@ -2474,18 +2400,7 @@ checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", -] - -[[package]] -name = "windows-interface" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -2496,57 +2411,39 @@ checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "windows-link" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" [[package]] -name = "windows-result" +name = "windows-numerics" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-result" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ + "windows-core", "windows-link", ] [[package]] -name = "windows-strings" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" -dependencies = [ - "windows-result 0.2.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-strings" -version = "0.3.1" +name = "windows-result" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ "windows-link", ] [[package]] name = "windows-strings" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ "windows-link", ] @@ -2557,7 +2454,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.6", + "windows-targets", ] [[package]] @@ -2566,7 +2463,7 @@ version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows-targets 0.52.6", + "windows-targets", ] [[package]] @@ -2575,30 +2472,23 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] [[package]] -name = "windows-targets" -version = "0.53.0" +name = "windows-threading" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" dependencies = [ - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", + "windows-link", ] [[package]] @@ -2607,101 +2497,53 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" - [[package]] name = "windows_i686_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" -[[package]] -name = "windows_i686_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" - [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" - [[package]] name = "windows_i686_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" -[[package]] -name = "windows_i686_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" - [[package]] name = "winnow" -version = "0.7.6" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63d3fcd9bba44b03821e7d699eeee959f3126dcc4aa8e4ae18ec617c2a5cea10" +checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" dependencies = [ "memchr", ] @@ -2712,41 +2554,35 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags 2.9.0", + "bitflags", ] [[package]] name = "wmi" -version = "0.14.5" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7787dacdd8e71cbc104658aade4009300777f9b5fda6a75f19145fedb8a18e71" +checksum = "3d3de777dce4cbcdc661d5d18e78ce4b46a37adc2bb7c0078a556c7f07bcce2f" dependencies = [ "chrono", "futures", "log", "serde", "thiserror 2.0.12", - "windows 0.59.0", - "windows-core 0.59.0", + "windows", + "windows-core", ] -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - [[package]] name = "writeable" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "xml-rs" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62ce76d9b56901b19a74f19431b0d8b3bc7ca4ad685a746dfd78ca8f4fc6bda" +checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7" [[package]] name = "xmltree" @@ -2759,9 +2595,9 @@ dependencies = [ [[package]] name = "yoke" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" dependencies = [ "serde", "stable_deref_trait", @@ -2771,34 +2607,34 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.24" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.24" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -2818,15 +2654,26 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", "synstructure", ] +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + [[package]] name = "zerovec" -version = "0.10.4" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" dependencies = [ "yoke", "zerofrom", @@ -2835,11 +2682,11 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] diff --git a/netwatch/Cargo.toml b/netwatch/Cargo.toml index f18124c1..27c6bbb8 100644 --- a/netwatch/Cargo.toml +++ b/netwatch/Cargo.toml @@ -7,10 +7,10 @@ license = "MIT OR Apache-2.0" authors = ["n0 team"] repository = "https://github.com/n0-computer/net-tools" keywords = ["networking", "interfaces"] -edition = "2021" +edition = "2024" # Sadly this also needs to be updated in .github/workflows/ci.yml -rust-version = "1.81" +rust-version = "1.85" [lints] workspace = true @@ -37,8 +37,8 @@ tracing = "0.1" [target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dependencies] quinn-udp = { package = "iroh-quinn-udp", version = "0.5.5" } libc = "0.2.139" -netdev = "0.31.0" -socket2 = "0.5.3" +netdev = "0.36.0" +socket2 = { version = "0.6", features = ["all"] } tokio = { version = "1", features = [ "io-util", "macros", @@ -53,24 +53,24 @@ tokio = { version = "1", features = [ ] } [target.'cfg(any(target_os = "linux", target_os = "android"))'.dependencies] -netlink-packet-route = "0.23.0" +netlink-packet-route = "0.24.0" netlink-packet-core = "0.7.0" netlink-proto = "0.11.5" netlink-sys = "0.8.7" [target.'cfg(target_os = "android")'.dependencies] -derive_more = { version = "1.0.0", features = ["display"] } +derive_more = { version = "2.0.1", features = ["display"] } [target.'cfg(target_os = "windows")'.dependencies] -wmi = "0.14" -windows = { version = "0.59", features = ["Win32_NetworkManagement_IpHelper", "Win32_Foundation", "Win32_NetworkManagement_Ndis", "Win32_Networking_WinSock"] } +wmi = "0.17" +windows = { version = "0.61.3", features = ["Win32_NetworkManagement_IpHelper", "Win32_Foundation", "Win32_NetworkManagement_Ndis", "Win32_Networking_WinSock"] } windows-result = "0.3" serde = { version = "1", features = ["derive"] } -derive_more = { version = "1.0.0", features = ["debug"] } +derive_more = { version = "2.0.1", features = ["debug"] } # wasm-in-browser dependencies [target.'cfg(all(target_family = "wasm", target_os = "unknown"))'.dependencies] -derive_more = { version = "1.0.0", features = ["display"] } +derive_more = { version = "2.0.1", features = ["display"] } js-sys = "0.3" web-sys = { version = "0.3.70", features = ["EventListener", "EventTarget"] } diff --git a/netwatch/src/interfaces.rs b/netwatch/src/interfaces.rs index 8a8843e5..86c75400 100644 --- a/netwatch/src/interfaces.rs +++ b/netwatch/src/interfaces.rs @@ -31,7 +31,7 @@ use self::linux::default_route; use self::windows::default_route; #[cfg(not(wasm_browser))] use crate::ip::is_link_local; -use crate::ip::{is_private_v6, is_up, LocalAddresses}; +use crate::ip::{LocalAddresses, is_private_v6, is_up}; #[cfg(not(wasm_browser))] use crate::netmon::is_interesting_interface; @@ -90,7 +90,7 @@ impl Interface { pub(crate) fn fake() -> Self { use std::net::Ipv4Addr; - use netdev::{interface::InterfaceType, mac::MacAddr, NetworkDevice}; + use netdev::{NetworkDevice, interface::InterfaceType, mac::MacAddr}; Self { iface: netdev::Interface { @@ -112,6 +112,9 @@ impl Interface { }), dns_servers: vec![], default: false, + ipv6_scope_ids: vec![], + stats: None, + mtu: None, }, } } @@ -433,13 +436,13 @@ mod tests { let default_route = DefaultRouteDetails::new() .await .expect("missing default route"); - println!("default_route: {:#?}", default_route); + println!("default_route: {default_route:#?}"); } #[tokio::test] async fn test_likely_home_router() { let home_router = HomeRouter::new().expect("missing home router"); - println!("home router: {:#?}", home_router); + println!("home router: {home_router:#?}"); } #[test] diff --git a/netwatch/src/interfaces/bsd.rs b/netwatch/src/interfaces/bsd.rs index 5097b86b..ee18e719 100644 --- a/netwatch/src/interfaces/bsd.rs +++ b/netwatch/src/interfaces/bsd.rs @@ -8,10 +8,10 @@ use std::{ sync::LazyLock, }; -use libc::{c_int, uintptr_t, AF_INET, AF_INET6, AF_LINK, AF_ROUTE, AF_UNSPEC, CTL_NET}; +use libc::{AF_INET, AF_INET6, AF_LINK, AF_ROUTE, AF_UNSPEC, CTL_NET, c_int, uintptr_t}; #[cfg(any(target_os = "macos", target_os = "ios"))] use libc::{ - NET_RT_DUMP, RTAX_BRD, RTAX_DST, RTAX_GATEWAY, RTAX_MAX, RTAX_NETMASK, RTA_IFP, RTF_GATEWAY, + NET_RT_DUMP, RTA_IFP, RTAX_BRD, RTAX_DST, RTAX_GATEWAY, RTAX_MAX, RTAX_NETMASK, RTF_GATEWAY, }; use nested_enum_utils::common_fields; use snafu::{Backtrace, IntoError, OptionExt, Snafu}; @@ -1109,10 +1109,10 @@ mod tests { ]; for (i, tt) in parse_addrs_little_endian_tests.into_iter().enumerate() { - let addrs = parse_addrs(tt.attrs, tt.parse_fn, &tt.b) - .unwrap_or_else(|_| panic!("failed {}", i)); + let addrs = + parse_addrs(tt.attrs, tt.parse_fn, &tt.b).unwrap_or_else(|_| panic!("failed {i}")); - assert_eq!(addrs, tt.addrs, "{}", i); + assert_eq!(addrs, tt.addrs, "{i}"); } } } diff --git a/netwatch/src/interfaces/linux.rs b/netwatch/src/interfaces/linux.rs index cf12e5eb..4c658f6d 100644 --- a/netwatch/src/interfaces/linux.rs +++ b/netwatch/src/interfaces/linux.rs @@ -128,15 +128,15 @@ mod android { #[cfg(not(target_os = "android"))] mod sane { use n0_future::{Either, StreamExt, TryStream}; - use netlink_packet_core::{NetlinkMessage, NLM_F_DUMP, NLM_F_REQUEST}; + use netlink_packet_core::{NLM_F_DUMP, NLM_F_REQUEST, NetlinkMessage}; use netlink_packet_route::{ + AddressFamily, RouteNetlinkMessage, link::{LinkAttribute, LinkMessage}, route::{RouteAttribute, RouteHeader, RouteMessage, RouteProtocol, RouteScope, RouteType}, - AddressFamily, RouteNetlinkMessage, }; use netlink_sys::protocols::NETLINK_ROUTE; use snafu::IntoError; - use tracing::{info_span, Instrument}; + use tracing::{Instrument, info_span}; use super::*; @@ -151,7 +151,7 @@ mod sane { match payload { NetlinkPayload::InnerMessage($message_type(msg)) => msg, NetlinkPayload::Error(err) => { - return Err(NetlinkErrorMessageSnafu { message: err }.build()) + return Err(NetlinkErrorMessageSnafu { message: err }.build()); } _ => return Err(UnexpectedNetlinkMessageSnafu.build()), } diff --git a/netwatch/src/interfaces/windows.rs b/netwatch/src/interfaces/windows.rs index 8e14048d..6ff2457e 100644 --- a/netwatch/src/interfaces/windows.rs +++ b/netwatch/src/interfaces/windows.rs @@ -4,7 +4,7 @@ use nested_enum_utils::common_fields; use serde::Deserialize; use snafu::{Backtrace, OptionExt, ResultExt, Snafu}; use tracing::warn; -use wmi::{query::FilterValue, COMLibrary, WMIConnection}; +use wmi::{COMLibrary, FilterValue, WMIConnection}; use super::DefaultRouteDetails; diff --git a/netwatch/src/netmon.rs b/netwatch/src/netmon.rs index e87975c6..9354662a 100644 --- a/netwatch/src/netmon.rs +++ b/netwatch/src/netmon.rs @@ -104,6 +104,6 @@ mod tests { let sub = mon.interface_state(); let current = sub.get().unwrap(); - println!("current state: {}", current); + println!("current state: {current}"); } } diff --git a/netwatch/src/netmon/actor.rs b/netwatch/src/netmon/actor.rs index 8654c289..c2e55530 100644 --- a/netwatch/src/netmon/actor.rs +++ b/netwatch/src/netmon/actor.rs @@ -1,9 +1,9 @@ use n0_future::time::{self, Duration, Instant}; use n0_watcher::Watchable; -#[cfg(not(wasm_browser))] -pub(crate) use os::is_interesting_interface; pub(super) use os::Error; use os::RouteMonitor; +#[cfg(not(wasm_browser))] +pub(crate) use os::is_interesting_interface; use tokio::sync::mpsc; use tracing::{debug, trace}; diff --git a/netwatch/src/netmon/linux.rs b/netwatch/src/netmon/linux.rs index 7f777e54..00d5bb4d 100644 --- a/netwatch/src/netmon/linux.rs +++ b/netwatch/src/netmon/linux.rs @@ -9,7 +9,7 @@ use libc::{ }; use n0_future::StreamExt; use netlink_packet_core::NetlinkPayload; -use netlink_packet_route::{address, route, RouteNetlinkMessage}; +use netlink_packet_route::{RouteNetlinkMessage, address, route}; use netlink_sys::{AsyncSocket, SocketAddr}; use snafu::{Backtrace, ResultExt, Snafu}; use tokio::{sync::mpsc, task::JoinHandle}; @@ -45,11 +45,7 @@ const fn nl_mgrp(group: u32) -> u32 { if group > 31 { panic!("use netlink_sys::Socket::add_membership() for this group"); } - if group == 0 { - 0 - } else { - 1 << (group - 1) - } + if group == 0 { 0 } else { 1 << (group - 1) } } macro_rules! get_nla { ($msg:expr, $nla:path) => { diff --git a/netwatch/src/netmon/wasm_browser.rs b/netwatch/src/netmon/wasm_browser.rs index 86da37eb..37695406 100644 --- a/netwatch/src/netmon/wasm_browser.rs +++ b/netwatch/src/netmon/wasm_browser.rs @@ -1,6 +1,6 @@ use js_sys::{ - wasm_bindgen::{prelude::Closure, JsCast}, Function, + wasm_bindgen::{JsCast, prelude::Closure}, }; use n0_future::task; use tokio::sync::mpsc; diff --git a/netwatch/src/netmon/windows.rs b/netwatch/src/netmon/windows.rs index 02c20c11..b601092b 100644 --- a/netwatch/src/netmon/windows.rs +++ b/netwatch/src/netmon/windows.rs @@ -136,7 +136,7 @@ impl CallbackHandler { trace!("unregistering unicast callback"); if self .unicast_callbacks - .remove(&(handle.0 .0 as isize)) + .remove(&(handle.0.0 as isize)) .is_some() { unsafe { @@ -180,7 +180,7 @@ impl CallbackHandler { trace!("unregistering route callback"); if self .route_callbacks - .remove(&(handle.0 .0 as isize)) + .remove(&(handle.0.0 as isize)) .is_some() { unsafe { @@ -204,7 +204,7 @@ unsafe extern "system" fn unicast_change_callback( return; } let callercontext = callercontext as *const UnicastCallback; - let cb = &*callercontext; + let cb = unsafe { &*callercontext }; cb(); } @@ -218,6 +218,6 @@ unsafe extern "system" fn route_change_callback( return; } let callercontext = callercontext as *const RouteCallback; - let cb = &*callercontext; + let cb = unsafe { &*callercontext }; cb(); } diff --git a/netwatch/src/udp.rs b/netwatch/src/udp.rs index f100f4df..3314bd54 100644 --- a/netwatch/src/udp.rs +++ b/netwatch/src/udp.rs @@ -3,7 +3,7 @@ use std::{ io, net::SocketAddr, pin::Pin, - sync::{atomic::AtomicBool, Arc, RwLock, RwLockReadGuard, TryLockError}, + sync::{Arc, RwLock, RwLockReadGuard, TryLockError, atomic::AtomicBool}, task::{Context, Poll}, }; @@ -318,7 +318,7 @@ impl UdpSocket { let guard = match self.socket.try_read() { Ok(guard) => guard, Err(TryLockError::Poisoned(e)) => { - panic!("lock poisoned: {:?}", e); + panic!("lock poisoned: {e:?}"); } Err(TryLockError::WouldBlock) => { return Err(io::Error::new(io::ErrorKind::WouldBlock, "locked")); @@ -1013,7 +1013,7 @@ mod tests { let socket = UdpSocket::bind_local(IpFamily::V4, 0)?; let addr = socket.local_addr()?; s_b.send(addr).await?; - println!("socket bound to {:?}", addr); + println!("socket bound to {addr:?}"); let mut buffer = [0u8; 16]; for i in 0..100 { @@ -1026,7 +1026,7 @@ mod tests { socket.send_to(&buffer[..count], addr).await?; } Err(err) => { - eprintln!("error reading: {:?}", err); + eprintln!("error reading: {err:?}"); } } } @@ -1041,7 +1041,7 @@ mod tests { let mut buffer = [0u8; 16]; for i in 0u8..100 { - println!("round one - {}", i); + println!("round one - {i}"); socket.send_to(&[i][..], addr).await?; let (count, from) = socket.recv_from(&mut buffer).await?; assert_eq!(addr, from); @@ -1067,11 +1067,11 @@ mod tests { async fn test_udp_mark_broken() -> TestResult { let socket_a = UdpSocket::bind_local(IpFamily::V4, 0)?; let addr_a = socket_a.local_addr()?; - println!("socket bound to {:?}", addr_a); + println!("socket bound to {addr_a:?}"); let socket_b = UdpSocket::bind_local(IpFamily::V4, 0)?; let addr_b = socket_b.local_addr()?; - println!("socket bound to {:?}", addr_b); + println!("socket bound to {addr_b:?}"); let handle = tokio::task::spawn(async move { let mut buffer = [0u8; 16]; @@ -1081,7 +1081,7 @@ mod tests { println!("got {:?} from {:?}", &buffer[..count], addr); } Err(err) => { - eprintln!("error recv: {:?}", err); + eprintln!("error recv: {err:?}"); } } } diff --git a/portmapper/Cargo.toml b/portmapper/Cargo.toml index 695e1adc..74adbced 100644 --- a/portmapper/Cargo.toml +++ b/portmapper/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "portmapper" version = "0.6.1" -edition = "2021" +edition = "2024" readme = "README.md" description = "Portmapping utilities" license = "MIT OR Apache-2.0" @@ -10,7 +10,7 @@ repository = "https://github.com/n0-computer/net-tools" keywords = ["portmapping", "pmp", "pcp", "upnp"] # Sadly this also needs to be updated in .github/workflows/ci.yml -rust-version = "1.81" +rust-version = "1.85" [lints] workspace = true @@ -18,7 +18,7 @@ workspace = true [dependencies] base64 = "0.22.1" bytes = "1.7" -derive_more = { version = "1.0.0", features = ["debug", "display", "from", "try_into", "deref"] } +derive_more = { version = "2.0.1", features = ["debug", "display", "from", "try_into", "deref"] } futures-lite = "2.5" futures-util = "0.3.25" igd-next = { version = "0.16.1", features = ["aio_tokio"] } @@ -27,11 +27,11 @@ libc = "0.2.139" nested_enum_utils = "0.2.0" netwatch = { version = "0.6.0", path = "../netwatch" } num_enum = "0.7" -rand = "0.8" +rand = "0.9" serde = { version = "1", features = ["derive", "rc"] } smallvec = "1.11.1" snafu = { version = "0.8.5", features = ["rust_1_81"] } -socket2 = "0.5.3" +socket2 = "0.6" time = "0.3.20" tokio = { version = "1", features = ["io-util", "macros", "sync", "rt", "net", "fs", "io-std", "signal", "process"] } tokio-util = { version = "0.7", features = ["io-util", "io", "codec", "rt"] } @@ -44,7 +44,7 @@ tower-layer = "0.3.3" [dev-dependencies] ntest = "0.9" -rand_chacha = "0.3.1" +rand_chacha = "0.9" tokio = { version = "1", features = ["io-util", "sync", "rt", "net", "fs", "macros", "time", "test-util"] } [features] diff --git a/portmapper/src/current_mapping.rs b/portmapper/src/current_mapping.rs index 762433a9..84b82bd5 100644 --- a/portmapper/src/current_mapping.rs +++ b/portmapper/src/current_mapping.rs @@ -175,7 +175,7 @@ impl futures_lite::Stream for CurrentMapping { mut self: Pin<&mut Self>, cx: &mut std::task::Context<'_>, ) -> Poll> { - self.as_mut().poll(cx).map(Some) + (*self.as_mut()).poll(cx).map(Some) } } @@ -202,8 +202,7 @@ mod tests { #[tokio::test] #[ntest::timeout(2500)] async fn report_renew_expire_report() { - const TEST_PORT: NonZeroU16 = // SAFETY: it's clearly non zero - unsafe { NonZeroU16::new_unchecked(9586) }; + const TEST_PORT: NonZeroU16 = NonZeroU16::new(9586).unwrap(); const TEST_IP: std::net::Ipv4Addr = std::net::Ipv4Addr::LOCALHOST; let (mut c, mut watcher) = CurrentMapping::::new(Default::default()); let now = std::time::Instant::now(); diff --git a/portmapper/src/lib.rs b/portmapper/src/lib.rs index f33490b0..990e2f63 100644 --- a/portmapper/src/lib.rs +++ b/portmapper/src/lib.rs @@ -13,7 +13,7 @@ use netwatch::interfaces::HomeRouter; use snafu::Snafu; use tokio::sync::{mpsc, oneshot, watch}; use tokio_util::task::AbortOnDropHandle; -use tracing::{debug, info_span, trace, Instrument}; +use tracing::{Instrument, debug, info_span, trace}; mod current_mapping; mod mapping; diff --git a/portmapper/src/nat_pmp/protocol/request.rs b/portmapper/src/nat_pmp/protocol/request.rs index 2478488c..6483b899 100644 --- a/portmapper/src/nat_pmp/protocol/request.rs +++ b/portmapper/src/nat_pmp/protocol/request.rs @@ -65,9 +65,9 @@ impl Request { Opcode::DetermineExternalAddress => Request::ExternalAddress, Opcode::MapUdp => Request::Mapping { proto: MapProtocol::Udp, - local_port: rng.gen(), - external_port: rng.gen(), - lifetime_seconds: rng.gen(), + local_port: rng.random(), + external_port: rng.random(), + lifetime_seconds: rng.random(), }, } } @@ -111,18 +111,18 @@ mod tests { #[test] fn test_encode_decode_addr_request() { - let mut gen = rand_chacha::ChaCha8Rng::seed_from_u64(42); + let mut rng = rand_chacha::ChaCha8Rng::seed_from_u64(42); - let request = Request::random(super::Opcode::DetermineExternalAddress, &mut gen); + let request = Request::random(super::Opcode::DetermineExternalAddress, &mut rng); let encoded = request.encode(); assert_eq!(request, Request::decode(&encoded)); } #[test] fn test_encode_decode_map_request() { - let mut gen = rand_chacha::ChaCha8Rng::seed_from_u64(42); + let mut rng = rand_chacha::ChaCha8Rng::seed_from_u64(42); - let request = Request::random(super::Opcode::MapUdp, &mut gen); + let request = Request::random(super::Opcode::MapUdp, &mut rng); let encoded = request.encode(); assert_eq!(request, Request::decode(&encoded)); } diff --git a/portmapper/src/nat_pmp/protocol/response.rs b/portmapper/src/nat_pmp/protocol/response.rs index 4e0b8bf3..f5bdadcd 100644 --- a/portmapper/src/nat_pmp/protocol/response.rs +++ b/portmapper/src/nat_pmp/protocol/response.rs @@ -185,18 +185,18 @@ impl Response { fn random(opcode: Opcode, rng: &mut R) -> Self { match opcode { Opcode::DetermineExternalAddress => { - let octets: [u8; 4] = rng.gen(); + let octets: [u8; 4] = rng.random(); Response::PublicAddress { - epoch_time: rng.gen(), + epoch_time: rng.random(), public_ip: octets.into(), } } Opcode::MapUdp => Response::PortMap { proto: MapProtocol::Udp, - epoch_time: rng.gen(), - private_port: rng.gen(), - external_port: rng.gen(), - lifetime_seconds: rng.gen(), + epoch_time: rng.random(), + private_port: rng.random(), + external_port: rng.random(), + lifetime_seconds: rng.random(), }, } } @@ -276,9 +276,9 @@ mod tests { #[test] fn test_decode_external_addr_response() { - let mut gen = rand_chacha::ChaCha8Rng::seed_from_u64(42); + let mut rng = rand_chacha::ChaCha8Rng::seed_from_u64(42); - let response = Response::random(Opcode::DetermineExternalAddress, &mut gen); + let response = Response::random(Opcode::DetermineExternalAddress, &mut rng); let encoded = response.encode(); assert_eq!(response, Response::decode(&encoded).unwrap()); } diff --git a/portmapper/src/pcp.rs b/portmapper/src/pcp.rs index b4d1daf4..0c8951de 100644 --- a/portmapper/src/pcp.rs +++ b/portmapper/src/pcp.rs @@ -47,9 +47,7 @@ pub enum Error { NonceMissmatch {}, #[snafu(display("received mapping is not for UDP"))] ProtocolMissmatch {}, - #[snafu(display( - "received mapping is for a local port that does not match the requested one" - ))] + #[snafu(display("received mapping is for a local port that does not match the requested one"))] PortMissmatch {}, #[snafu(display("received 0 external port for mapping"))] ZeroExternalPort {}, @@ -88,7 +86,7 @@ impl Mapping { .context(IoSnafu)?; let mut nonce = [0u8; 12]; - rand::thread_rng().fill_bytes(&mut nonce); + rand::rng().fill_bytes(&mut nonce); let (requested_address, requested_port) = match preferred_external_address { Some((ip, port)) => (Some(ip), Some(port.into())), diff --git a/portmapper/src/pcp/protocol/opcode_data.rs b/portmapper/src/pcp/protocol/opcode_data.rs index 919c65eb..adaf60c3 100644 --- a/portmapper/src/pcp/protocol/opcode_data.rs +++ b/portmapper/src/pcp/protocol/opcode_data.rs @@ -105,12 +105,12 @@ impl MapData { #[cfg(test)] fn random(rng: &mut R) -> MapData { - let octets: [u8; 16] = rng.gen(); + let octets: [u8; 16] = rng.random(); MapData { - nonce: rng.gen(), + nonce: rng.random(), protocol: MapProtocol::Udp, - local_port: rng.gen(), - external_port: rng.gen(), + local_port: rng.random(), + external_port: rng.random(), external_address: octets.into(), } } diff --git a/portmapper/src/pcp/protocol/request.rs b/portmapper/src/pcp/protocol/request.rs index 3cb0d652..4ed35456 100644 --- a/portmapper/src/pcp/protocol/request.rs +++ b/portmapper/src/pcp/protocol/request.rs @@ -3,8 +3,8 @@ use std::net::{Ipv4Addr, Ipv6Addr}; use super::{ - opcode_data::{MapData, MapProtocol, OpcodeData}, Version, + opcode_data::{MapData, MapProtocol, OpcodeData}, }; /// A PCP Request. @@ -103,10 +103,10 @@ impl Request { #[cfg(test)] fn random(opcode: super::Opcode, rng: &mut R) -> Self { let opcode_data = OpcodeData::random(opcode, rng); - let addr_octets: [u8; 16] = rng.gen(); + let addr_octets: [u8; 16] = rng.random(); Request { version: Version::Pcp, - lifetime_seconds: rng.gen(), + lifetime_seconds: rng.random(), client_addr: Ipv6Addr::from(addr_octets), opcode_data, } @@ -143,18 +143,18 @@ mod tests { #[test] fn test_encode_decode_addr_request() { - let mut gen = rand_chacha::ChaCha8Rng::seed_from_u64(42); + let mut rng = rand_chacha::ChaCha8Rng::seed_from_u64(42); - let request = Request::random(super::super::Opcode::Announce, &mut gen); + let request = Request::random(super::super::Opcode::Announce, &mut rng); let encoded = request.encode(); assert_eq!(request, Request::decode(&encoded)); } #[test] fn test_encode_decode_map_request() { - let mut gen = rand_chacha::ChaCha8Rng::seed_from_u64(42); + let mut rng = rand_chacha::ChaCha8Rng::seed_from_u64(42); - let request = Request::random(super::super::Opcode::Map, &mut gen); + let request = Request::random(super::super::Opcode::Map, &mut rng); let encoded = request.encode(); assert_eq!(request, Request::decode(&encoded)); } diff --git a/portmapper/src/pcp/protocol/response.rs b/portmapper/src/pcp/protocol/response.rs index a0236be4..f7e69358 100644 --- a/portmapper/src/pcp/protocol/response.rs +++ b/portmapper/src/pcp/protocol/response.rs @@ -5,7 +5,7 @@ use nested_enum_utils::common_fields; use num_enum::{IntoPrimitive, TryFromPrimitive, TryFromPrimitiveError}; use snafu::{Backtrace, Snafu}; -use super::{opcode_data::OpcodeData, Opcode, Version}; +use super::{Opcode, Version, opcode_data::OpcodeData}; /// ResultCode in a [`Response`] when it's successful. #[derive(Debug, Clone, Copy, PartialEq, Eq, TryFromPrimitive, IntoPrimitive)] @@ -226,8 +226,8 @@ impl Response { fn random(opcode: Opcode, rng: &mut R) -> Self { let data = OpcodeData::random(opcode, rng); Self { - lifetime_seconds: rng.gen(), - epoch_time: rng.gen(), + lifetime_seconds: rng.random(), + epoch_time: rng.random(), data, } } @@ -274,9 +274,9 @@ mod tests { #[test] fn test_decode_external_addr_response() { - let mut gen = rand_chacha::ChaCha8Rng::seed_from_u64(42); + let mut rng = rand_chacha::ChaCha8Rng::seed_from_u64(42); - let response = Response::random(Opcode::Announce, &mut gen); + let response = Response::random(Opcode::Announce, &mut rng); let encoded = response.encode(); assert_eq!(response, Response::decode(&encoded).unwrap()); } diff --git a/portmapper/src/upnp.rs b/portmapper/src/upnp.rs index b4bf5e71..3c4db560 100644 --- a/portmapper/src/upnp.rs +++ b/portmapper/src/upnp.rs @@ -5,7 +5,7 @@ use std::{ time::Duration, }; -use igd_next::{aio as aigd, AddAnyPortError, GetExternalIpError, RemovePortError, SearchError}; +use igd_next::{AddAnyPortError, GetExternalIpError, RemovePortError, SearchError, aio as aigd}; use nested_enum_utils::common_fields; use snafu::{Backtrace, ResultExt, Snafu}; use tracing::debug;