From 5d070b3fa90794feb48c5850b8707ddd960a29b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A3=8E=E6=89=87=E6=BB=91=E7=BF=94=E7=BF=BC?= Date: Sat, 28 Jun 2025 14:27:45 +0000 Subject: [PATCH] Prevent unexpected system resolve --- proxy/freedom/freedom.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/proxy/freedom/freedom.go b/proxy/freedom/freedom.go index 1e4e077d..20acaf30 100644 --- a/proxy/freedom/freedom.go +++ b/proxy/freedom/freedom.go @@ -381,8 +381,10 @@ func (w *PacketWriter) WriteMultiBuffer(mb buf.MultiBuffer) error { if w.UDPOverride.Port != 0 { b.UDP.Port = w.UDPOverride.Port } + var ip net.Address if b.UDP.Address.Family().IsDomain() { - if ip, ok := w.resolvedUDPAddr.Load(b.UDP.Address.Domain()); ok { + var ok bool + if ip, ok = w.resolvedUDPAddr.Load(b.UDP.Address.Domain()); ok { b.UDP.Address = ip } else { ShouldUseSystemResolver := true @@ -408,11 +410,14 @@ func (w *PacketWriter) WriteMultiBuffer(mb buf.MultiBuffer) error { } } } - destAddr, _ := net.ResolveUDPAddr("udp", b.UDP.NetAddr()) - if destAddr == nil { + if ip == nil { b.Release() continue } + destAddr := &net.UDPAddr{ + IP: ip.IP(), + Port: int(b.UDP.Port), + } n, err = w.PacketConnWrapper.WriteTo(b.Bytes(), destAddr) } else { n, err = w.PacketConnWrapper.Write(b.Bytes())