tokio-xmpp: set resolve ip_strategy to Ipv4AndIpv6

Astro created

The happy_eyeballs implementation should try to connect on both address
families. The default of Ipv4thenIpv6 wouldn't query for AAAA if it got
A.

Change summary

tokio-xmpp/src/starttls/happy_eyeballs.rs | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)

Detailed changes

tokio-xmpp/src/starttls/happy_eyeballs.rs 🔗

@@ -1,5 +1,7 @@
 use super::error::{ConnectorError, Error};
-use hickory_resolver::{IntoName, TokioAsyncResolver};
+use hickory_resolver::{
+    config::LookupIpStrategy, name_server::TokioConnectionProvider, IntoName, TokioAsyncResolver,
+};
 use log::debug;
 use std::net::SocketAddr;
 use tokio::net::TcpStream;
@@ -13,7 +15,10 @@ pub async fn connect_to_host(domain: &str, port: u16) -> Result<TcpStream, Error
             .map_err(|e| Error::from(crate::Error::Io(e)))?);
     }
 
-    let resolver = TokioAsyncResolver::tokio_from_system_conf().map_err(ConnectorError::Resolve)?;
+    let (config, mut options) =
+        hickory_resolver::system_conf::read_system_conf().map_err(ConnectorError::Resolve)?;
+    options.ip_strategy = LookupIpStrategy::Ipv4AndIpv6;
+    let resolver = TokioAsyncResolver::new(config, options, TokioConnectionProvider::default());
 
     let ips = resolver
         .lookup_ip(ascii_domain)