From 2675cf2d0070cdb7f77f232521ee8259dfe2b579 Mon Sep 17 00:00:00 2001 From: "Sijie.Sun" Date: Sun, 11 May 2025 08:46:31 +0800 Subject: [PATCH] bump hickory-dns version to v0.25.2 (#839) --- Cargo.lock | 191 +++++++++++++++++++----- easytier/Cargo.toml | 3 +- easytier/src/common/stun.rs | 17 ++- easytier/src/connector/dns_connector.rs | 33 ++-- 4 files changed, 177 insertions(+), 67 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4d8dc3b..770e548 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -284,7 +284,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1222afd3d2bce3995035054046a279ae7aa154d70d0766cea050073f3fd7ddf" dependencies = [ - "loom", + "loom 0.5.6", "pin-project-lite", ] @@ -1451,6 +1451,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + [[package]] name = "crossbeam" version = "0.8.4" @@ -1749,7 +1755,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28025fb55a9d815acf7b0877555f437254f373036eec6ed265116c7a5c0825e9" dependencies = [ - "loom", + "loom 0.5.6", "waker-fn", ] @@ -1921,6 +1927,7 @@ dependencies = [ "gethostname 0.5.0", "git-version", "globwalk", + "hickory-proto", "hickory-resolver", "http", "http_req", @@ -2689,6 +2696,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" @@ -2743,6 +2763,18 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + [[package]] name = "ghash" version = "0.5.1" @@ -3060,9 +3092,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hickory-proto" -version = "0.24.4" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92652067c9ce6f66ce53cc38d1169daa36e6e7eb7dd3b63b5103bd9d97117248" +checksum = "f8a6fe56c0038198998a6f217ca4e7ef3a5e51f46163bd6dd60b5c71ca6c6502" dependencies = [ "async-trait", "cfg-if", @@ -3071,11 +3103,12 @@ dependencies = [ "futures-channel", "futures-io", "futures-util", - "idna 1.0.3", + "idna", "ipnet", "once_cell", - "rand 0.8.5", - "thiserror 1.0.63", + "rand 0.9.1", + "ring", + "thiserror 2.0.11", "tinyvec", "tokio", "tracing", @@ -3084,21 +3117,21 @@ dependencies = [ [[package]] name = "hickory-resolver" -version = "0.24.4" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbb117a1ca520e111743ab2f6688eddee69db4e0ea242545a604dce8a66fd22e" +checksum = "dc62a9a99b0bfb44d2ab95a7208ac952d31060efc16241c87eaf36406fecf87a" dependencies = [ "cfg-if", "futures-util", "hickory-proto", "ipconfig", - "lru-cache", + "moka", "once_cell", "parking_lot", - "rand 0.8.5", + "rand 0.9.1", "resolv-conf", "smallvec", - "thiserror 1.0.63", + "thiserror 2.0.11", "tokio", "tracing", ] @@ -3456,16 +3489,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" -[[package]] -name = "idna" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - [[package]] name = "idna" version = "1.0.3" @@ -3937,9 +3960,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.169" +version = "0.2.172" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" [[package]] name = "libloading" @@ -3994,12 +4017,6 @@ version = "0.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64804cc6a5042d4f05379909ba25b503ec04e2c082151d62122d5dcaa274b961" -[[package]] -name = "linked-hash-map" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" - [[package]] name = "linux-raw-sys" version = "0.4.14" @@ -4036,19 +4053,23 @@ 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 = "lru-cache" -version = "0.1.2" +name = "loom" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" +checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" dependencies = [ - "linked-hash-map", + "cfg-if", + "generator 0.8.4", + "scoped-tls", + "tracing", + "tracing-subscriber", ] [[package]] @@ -4228,6 +4249,25 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "moka" +version = "0.12.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9321642ca94a4282428e6ea4af8cc2ca4eac48ac7a6a4ea8f33f76d0ce70926" +dependencies = [ + "crossbeam-channel", + "crossbeam-epoch", + "crossbeam-utils", + "loom 0.7.2", + "parking_lot", + "portable-atomic", + "rustc_version", + "smallvec", + "tagptr", + "thiserror 1.0.63", + "uuid", +] + [[package]] name = "muda" version = "0.15.3" @@ -4867,9 +4907,13 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +dependencies = [ + "critical-section", + "portable-atomic", +] [[package]] name = "opaque-debug" @@ -5529,6 +5573,12 @@ dependencies = [ "universal-hash", ] +[[package]] +name = "portable-atomic" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" + [[package]] name = "powerfmt" version = "0.2.0" @@ -5853,6 +5903,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + [[package]] name = "radium" version = "0.7.0" @@ -5884,6 +5940,16 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "rand" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", +] + [[package]] name = "rand_chacha" version = "0.2.2" @@ -5904,6 +5970,16 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "rand_chacha" +version = "0.9.0" +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.5.1" @@ -5922,6 +5998,15 @@ dependencies = [ "getrandom 0.2.15", ] +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", +] + [[package]] name = "rand_distr" version = "0.2.2" @@ -7656,10 +7741,16 @@ dependencies = [ "crossbeam-utils", "diatomic-waker", "futures-core", - "loom", + "loom 0.5.6", "pin-project-lite", ] +[[package]] +name = "tagptr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" + [[package]] name = "tao" version = "0.30.6" @@ -8883,12 +8974,12 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", - "idna 0.5.0", + "idna", "percent-encoding", "serde", ] @@ -9039,6 +9130,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasite" version = "0.1.0" @@ -9725,6 +9825,15 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.8.0", +] + [[package]] name = "write16" version = "1.0.0" diff --git a/easytier/Cargo.toml b/easytier/Cargo.toml index c7f217f..d890505 100644 --- a/easytier/Cargo.toml +++ b/easytier/Cargo.toml @@ -202,7 +202,8 @@ http_req = { git = "https://github.com/EasyTier/http_req.git", default-features ] } # for dns connector -hickory-resolver = "0.24.4" +hickory-resolver = "0.25.2" +hickory-proto = "0.25.2" bounded_join_set = "0.3.0" diff --git a/easytier/src/common/stun.rs b/easytier/src/common/stun.rs index 8ec6544..44d38ea 100644 --- a/easytier/src/common/stun.rs +++ b/easytier/src/common/stun.rs @@ -8,8 +8,10 @@ use crate::proto::common::{NatType, StunInfo}; use anyhow::Context; use chrono::Local; use crossbeam::atomic::AtomicCell; -use hickory_resolver::config::{NameServerConfig, Protocol, ResolverConfig, ResolverOpts}; -use hickory_resolver::TokioAsyncResolver; +use hickory_proto::xfer::Protocol; +use hickory_resolver::config::{NameServerConfig, ResolverConfig}; +use hickory_resolver::name_server::TokioConnectionProvider; +use hickory_resolver::TokioResolver; use rand::seq::IteratorRandom; use tokio::net::{lookup_host, UdpSocket}; use tokio::sync::{broadcast, Mutex}; @@ -39,7 +41,7 @@ pub fn get_default_resolver_config() -> ResolverConfig { pub async fn resolve_txt_record( domain_name: &str, - resolver: &TokioAsyncResolver, + resolver: &TokioResolver, ) -> Result { let response = resolver.txt_lookup(domain_name).await.with_context(|| { format!( @@ -79,9 +81,12 @@ impl HostResolverIter { } async fn get_txt_record(domain_name: &str) -> Result, Error> { - let resolver = TokioAsyncResolver::tokio_from_system_conf().unwrap_or( - TokioAsyncResolver::tokio(get_default_resolver_config(), ResolverOpts::default()), - ); + let resolver = TokioResolver::builder_tokio() + .unwrap_or(TokioResolver::builder_with_config( + get_default_resolver_config(), + TokioConnectionProvider::default(), + )) + .build(); let txt_data = resolve_txt_record(domain_name, &resolver).await?; Ok(txt_data.split(" ").map(|x| x.to_string()).collect()) } diff --git a/easytier/src/connector/dns_connector.rs b/easytier/src/connector/dns_connector.rs index 472bdd7..29dd93c 100644 --- a/easytier/src/connector/dns_connector.rs +++ b/easytier/src/connector/dns_connector.rs @@ -11,9 +11,7 @@ use crate::{ use anyhow::Context; use dashmap::DashSet; use hickory_resolver::{ - config::{ResolverConfig, ResolverOpts}, - proto::rr::rdata::SRV, - TokioAsyncResolver, + name_server::TokioConnectionProvider, proto::rr::rdata::SRV, TokioResolver, }; use rand::{seq::SliceRandom, Rng as _}; @@ -43,9 +41,6 @@ pub struct DNSTunnelConnector { bind_addrs: Vec, global_ctx: ArcGlobalCtx, ip_version: IpVersion, - - default_resolve_config: ResolverConfig, - default_resolve_opts: ResolverOpts, } impl DNSTunnelConnector { @@ -55,9 +50,6 @@ impl DNSTunnelConnector { bind_addrs: Vec::new(), global_ctx, ip_version: IpVersion::Both, - - default_resolve_config: get_default_resolver_config(), - default_resolve_opts: ResolverOpts::default(), } } @@ -66,11 +58,13 @@ impl DNSTunnelConnector { &self, domain_name: &str, ) -> Result, Error> { - let resolver = - TokioAsyncResolver::tokio_from_system_conf().unwrap_or(TokioAsyncResolver::tokio( - self.default_resolve_config.clone(), - self.default_resolve_opts.clone(), - )); + let resolver = TokioResolver::builder_tokio() + .unwrap_or(TokioResolver::builder_with_config( + get_default_resolver_config(), + TokioConnectionProvider::default(), + )) + .build(); + let txt_data = resolve_txt_record(domain_name, &resolver) .await .with_context(|| format!("resolve txt record failed, domain_name: {}", domain_name))?; @@ -126,11 +120,12 @@ impl DNSTunnelConnector { ) -> Result, Error> { tracing::info!("handle_srv_record: {}", domain_name); - let resolver = - TokioAsyncResolver::tokio_from_system_conf().unwrap_or(TokioAsyncResolver::tokio( - self.default_resolve_config.clone(), - self.default_resolve_opts.clone(), - )); + let resolver = TokioResolver::builder_tokio() + .unwrap_or(TokioResolver::builder_with_config( + get_default_resolver_config(), + TokioConnectionProvider::default(), + )) + .build(); let srv_domains = PROTO_PORT_OFFSET .iter()