trust-dns lookup strategy Ipv4AndIpv6

This commit is contained in:
zonyitoo
2021-09-25 23:30:54 +08:00
parent 0c96cf5840
commit c8d81dfca8
@@ -9,16 +9,16 @@ use trust_dns_resolver::{
};
/// Create a `trust-dns` asynchronous DNS resolver
pub async fn create_resolver(dns: Option<ResolverConfig>, ipv6_first: bool) -> ResolveResult<TokioAsyncResolver> {
let mut resolver_opts = ResolverOpts::default();
if ipv6_first {
resolver_opts.ip_strategy = LookupIpStrategy::Ipv6thenIpv4;
}
pub async fn create_resolver(dns: Option<ResolverConfig>, _ipv6_first: bool) -> ResolveResult<TokioAsyncResolver> {
// Customized dns resolution
match dns {
Some(conf) => {
let mut resolver_opts = ResolverOpts::default();
// Use Ipv4AndIpv6 strategy. Because Ipv4ThenIpv6 or Ipv6ThenIpv4 will return if the first query returned.
// Since we want to use Happy Eyeballs to connnect to both IPv4 and IPv6 addresses, we need both A and AAAA records.
resolver_opts.ip_strategy = LookupIpStrategy::Ipv4AndIpv6;
trace!(
"initializing DNS resolver with config {:?} opts {:?}",
conf,
@@ -50,10 +50,8 @@ pub async fn create_resolver(dns: Option<ResolverConfig>, ipv6_first: bool) -> R
// NOTE: timeout will be set by config (for example, /etc/resolv.conf on UNIX-like system)
//
// Only ip_strategy should be changed
if ipv6_first {
opts.ip_strategy = LookupIpStrategy::Ipv6thenIpv4;
}
// Only ip_strategy should be changed. Why Ipv4AndIpv6? See comments above.
opts.ip_strategy = LookupIpStrategy::Ipv4AndIpv6;
trace!(
"initializing DNS resolver with system-config {:?} opts {:?}",