From 9372f823ed7f0a2634bd0da86576d15d8dcfd6ef Mon Sep 17 00:00:00 2001 From: monosans Date: Thu, 8 Jan 2026 16:19:57 +0300 Subject: [PATCH] refactor dns resolver --- src/checker.rs | 8 ++++---- src/http.rs | 3 ++- src/main.rs | 4 ++-- src/proxy.rs | 3 +-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/checker.rs b/src/checker.rs index d062114..a409a47 100644 --- a/src/checker.rs +++ b/src/checker.rs @@ -6,9 +6,9 @@ use color_eyre::eyre::OptionExt as _; use crate::event::{AppEvent, Event}; use crate::{config::Config, proxy::Proxy, utils::pretty_error}; -pub async fn check_all( +pub async fn check_all( config: Arc, - dns_resolver: Arc, + dns_resolver: R, proxies: Vec, token: tokio_util::sync::CancellationToken, #[cfg(feature = "tui")] tx: tokio::sync::mpsc::UnboundedSender, @@ -33,7 +33,7 @@ pub async fn check_all( for _ in 0..workers_count { let queue = Arc::clone(&queue); let config = Arc::clone(&config); - let dns_resolver = Arc::clone(&dns_resolver); + let dns_resolver = dns_resolver.clone(); let checked_proxies = Arc::clone(&checked_proxies); let token = token.clone(); #[cfg(feature = "tui")] @@ -46,7 +46,7 @@ pub async fn check_all( let Some(mut proxy) = queue.lock().pop() else { break; }; - let check_result = proxy.check(&config, Arc::clone(&dns_resolver)).await; + let check_result = proxy.check(&config, dns_resolver.clone()).await; #[cfg(feature = "tui")] drop(tx.send(Event::App(AppEvent::ProxyChecked(proxy.protocol)))); match check_result { diff --git a/src/http.rs b/src/http.rs index 162c3b2..e5f7618 100644 --- a/src/http.rs +++ b/src/http.rs @@ -26,6 +26,7 @@ pub struct BasicAuth { pub password: Option, } +#[derive(Clone)] pub struct HickoryDnsResolver(Arc); impl HickoryDnsResolver { @@ -163,7 +164,7 @@ impl reqwest_middleware::Middleware for RetryMiddleware { pub fn create_reqwest_client( config: &Config, - dns_resolver: Arc, + dns_resolver: R, ) -> reqwest::Result { let mut builder = reqwest::ClientBuilder::new() .user_agent(config.scraping.user_agent.as_bytes()) diff --git a/src/main.rs b/src/main.rs index be8ce1c..3714b0e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -171,9 +171,9 @@ async fn main_task( event::Event, >, ) -> crate::Result<()> { - let dns_resolver = Arc::new(http::HickoryDnsResolver::new().await?); + let dns_resolver = http::HickoryDnsResolver::new().await?; let http_client = - http::create_reqwest_client(&config, Arc::clone(&dns_resolver))?; + http::create_reqwest_client(&config, dns_resolver.clone())?; let ((), mut proxies) = tokio::try_join!( download_output_dependencies( diff --git a/src/proxy.rs b/src/proxy.rs index 4db70d1..c3f48da 100644 --- a/src/proxy.rs +++ b/src/proxy.rs @@ -1,7 +1,6 @@ use std::{ hash::{Hash, Hasher}, str::FromStr, - sync::Arc, time::{Duration, Instant}, }; @@ -126,7 +125,7 @@ impl Proxy { pub async fn check( &mut self, config: &Config, - dns_resolver: Arc, + dns_resolver: R, ) -> crate::Result<()> { if let Some(check_url) = config.checking.check_url.clone() { let builder = reqwest::ClientBuilder::new()