Prevent unexpected system resolve

This commit is contained in:
风扇滑翔翼 2025-06-28 14:27:45 +00:00 committed by GitHub
parent b44a5ab894
commit 5d070b3fa9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -381,8 +381,10 @@ func (w *PacketWriter) WriteMultiBuffer(mb buf.MultiBuffer) error {
if w.UDPOverride.Port != 0 { if w.UDPOverride.Port != 0 {
b.UDP.Port = w.UDPOverride.Port b.UDP.Port = w.UDPOverride.Port
} }
var ip net.Address
if b.UDP.Address.Family().IsDomain() { 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 b.UDP.Address = ip
} else { } else {
ShouldUseSystemResolver := true ShouldUseSystemResolver := true
@ -408,11 +410,14 @@ func (w *PacketWriter) WriteMultiBuffer(mb buf.MultiBuffer) error {
} }
} }
} }
destAddr, _ := net.ResolveUDPAddr("udp", b.UDP.NetAddr()) if ip == nil {
if destAddr == nil {
b.Release() b.Release()
continue continue
} }
destAddr := &net.UDPAddr{
IP: ip.IP(),
Port: int(b.UDP.Port),
}
n, err = w.PacketConnWrapper.WriteTo(b.Bytes(), destAddr) n, err = w.PacketConnWrapper.WriteTo(b.Bytes(), destAddr)
} else { } else {
n, err = w.PacketConnWrapper.Write(b.Bytes()) n, err = w.PacketConnWrapper.Write(b.Bytes())