fix some more network issues
This commit is contained in:
		@@ -19,7 +19,7 @@ cfg_if! {
 | 
			
		||||
            if #[cfg(feature="rt-async-std")] {
 | 
			
		||||
                use async_std_resolver::{config, resolver, resolver_from_system_conf, AsyncStdResolver as AsyncResolver};
 | 
			
		||||
            } else if #[cfg(feature="rt-tokio")] {
 | 
			
		||||
                use trust_dns_resolver::{config, TokioAsyncResolver as AsyncResolver, error::ResolveError};
 | 
			
		||||
                use trust_dns_resolver::{config, TokioAsyncResolver as AsyncResolver, error::ResolveError, error::ResolveErrorKind};
 | 
			
		||||
 | 
			
		||||
                pub async fn resolver(
 | 
			
		||||
                    config: config::ResolverConfig,
 | 
			
		||||
@@ -66,6 +66,12 @@ cfg_if! {
 | 
			
		||||
                Ok(resolver)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        async fn reset_resolver() {
 | 
			
		||||
            let mut resolver_lock = RESOLVER.lock().await;
 | 
			
		||||
            *resolver_lock = None;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -107,9 +113,17 @@ pub async fn txt_lookup<S: AsRef<str>>(host: S) -> EyreResult<Vec<String>> {
 | 
			
		||||
 | 
			
		||||
        } else {
 | 
			
		||||
            let resolver = get_resolver().await?;
 | 
			
		||||
            let txt_result = resolver
 | 
			
		||||
            let txt_result = match resolver
 | 
			
		||||
                .txt_lookup(host.as_ref())
 | 
			
		||||
                .await?;
 | 
			
		||||
                .await {
 | 
			
		||||
                    Ok(v) => v,
 | 
			
		||||
                    Err(e) => {
 | 
			
		||||
                        if matches!(e.kind(), ResolveErrorKind::NoConnections) {
 | 
			
		||||
                            reset_resolver().await;
 | 
			
		||||
                        }
 | 
			
		||||
                        bail!("txt_lookup error: {}", e);
 | 
			
		||||
                    }
 | 
			
		||||
                };
 | 
			
		||||
            let mut out = Vec::new();
 | 
			
		||||
            for x in txt_result.iter() {
 | 
			
		||||
                for s in x.txt_data() {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user