diff -Nru shortwave-5.1.0/debian/changelog shortwave-5.1.0/debian/changelog --- shortwave-5.1.0/debian/changelog 2026-08-10 10:29:19.000000000 -0500 +++ shortwave-5.1.0/debian/changelog 2026-08-12 11:48:30.000000000 -0500 @@ -1,3 +1,10 @@ +shortwave (5.1.0-3.1) unstable; urgency=medium + + * Non-maintainer upload. + * Cherry-pick hickory 0.26 patch from upstream instead (Closes: #1144218). + + -- Simon Quigley Wed, 12 Aug 2026 11:48:30 -0500 + shortwave (5.1.0-3) unstable; urgency=medium [ Simon Quigley ] diff -Nru shortwave-5.1.0/debian/patches/hickory-0.26.patch shortwave-5.1.0/debian/patches/hickory-0.26.patch --- shortwave-5.1.0/debian/patches/hickory-0.26.patch 2026-08-10 10:29:19.000000000 -0500 +++ shortwave-5.1.0/debian/patches/hickory-0.26.patch 2026-08-12 11:48:28.000000000 -0500 @@ -1,10 +1,11 @@ -From: Simon Quigley +From: Felix Häcker Date: Mon, 10 Aug 2026 17:28:41 +0200 Subject: Build against hickory-resolver 0.26 -Origin: vendor -Forwarded: no -Last-Update: 2026-08-07 +Origin: upstream +Forwarded: yes +Applied-Upstream: 92a1baf6622c693a602e72e68b4340ed677edf61 +Last-Update: 2026-08-12 --- Cargo.toml | 2 +- @@ -25,7 +26,7 @@ cast-sender = "0.3" cruet = "0.14" diff --git a/src/api/client.rs b/src/api/client.rs -index 57faf47..d6135d5 100644 +index 57faf47c..6cb9497a 100644 --- a/src/api/client.rs +++ b/src/api/client.rs @@ -20,7 +20,7 @@ use std::sync::Arc; @@ -37,50 +38,36 @@ use indexmap::IndexMap; use rand::prelude::SliceRandom; use rand::rng; -@@ -99,17 +99,18 @@ async fn send_request( - +@@ -100,15 +100,17 @@ async fn send_request( pub async fn lookup_rb_server() -> Option { let lookup_domain = settings_manager::string(Key::ApiLookupDomain); -- let resolver = if let Ok(resolver) = Resolver::builder_tokio() { + let resolver = if let Ok(resolver) = Resolver::builder_tokio() { - resolver.build() -+ let resolver = if let Ok(builder) = Resolver::builder_tokio() { -+ builder.build() ++ resolver.build().ok() } else { warn!("Unable to use dns resolver from system conf"); ++ Resolver::builder_with_config(ResolverConfig::default(), TokioRuntimeProvider::default()) ++ .build() ++ .ok() ++ }; - Resolver::builder_with_config( - ResolverConfig::default(), +- Resolver::builder_with_config( +- ResolverConfig::default(), - TokioConnectionProvider::default(), -+ TokioRuntimeProvider::default(), - ) - .build() -- }; -+ } -+ .ok()?; +- ) +- .build() ++ let Some(resolver) = resolver else { ++ error!("Unable to retrieve dns resolver"); ++ return None; + }; // Do forward lookup to receive a list with the api servers - let response = resolver.lookup_ip(lookup_domain).await.ok()?; -@@ -120,19 +121,15 @@ pub async fn lookup_rb_server() -> Option { - - for ip in ips { - // Do a reverse lookup to get the hostname -- let result = resolver -- .reverse_lookup(ip) -- .await -- .ok() +@@ -124,7 +126,7 @@ pub async fn lookup_rb_server() -> Option { + .reverse_lookup(ip) + .await + .ok() - .and_then(|r| r.into_iter().next()); -+ let result = resolver.reverse_lookup(ip).await.ok(); ++ .and_then(|r| r.answers().first().map(|rec| rec.data.to_string())); -- if result.is_none() { -+ let Some(result) = result.and_then(|r| r.answers().first().cloned()) else { + if result.is_none() { warn!("Reverse lookup for {ip} failed"); - continue; -- } -+ }; - - // We need to strip the trailing "." from the domain name, otherwise TLS hostname verification fails -- let domain = result.unwrap().to_string(); -+ let domain = result.to_string(); - let hostname = domain.trim_end_matches("."); - - // Check if the server is online / returns data