diff --git a/crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs b/crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs index bd417e2a..7af31544 100644 --- a/crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs +++ b/crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs @@ -15,9 +15,12 @@ use hickory_resolver::{ config::{LookupIpStrategy, ResolverConfig, ResolverOpts}, error::ResolveResult, name_server::{GenericConnector, RuntimeProvider}, - proto::{iocompat::AsyncIoTokioAsStd, udp::DnsUdpSocket, TokioTime}, - AsyncResolver, - TokioHandle, + proto::{ + iocompat::AsyncIoTokioAsStd, + udp::{DnsUdpSocket, QuicLocalAddr}, + TokioTime, + }, + AsyncResolver, TokioHandle, }; use log::trace; use tokio::{io::ReadBuf, net::UdpSocket}; @@ -59,6 +62,12 @@ impl DnsUdpSocket for ShadowUdpSocket { } } +impl QuicLocalAddr for ShadowUdpSocket { + fn local_addr(&self) -> io::Result { + self.deref().local_addr() + } +} + impl RuntimeProvider for ShadowDnsRuntimeProvider { type Handle = TokioHandle; type Tcp = AsyncIoTokioAsStd;