From 1ea00fad81896b02e8c9988c8d10a7c27835892b 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, 26 Jul 2025 09:27:35 +0800 Subject: [PATCH] UDP listener: Allow listening on "localhost" (#4940) Fixes https://github.com/XTLS/Xray-core/issues/4939 --- transport/internet/udp/hub.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/transport/internet/udp/hub.go b/transport/internet/udp/hub.go index c16085d5..08354c43 100644 --- a/transport/internet/udp/hub.go +++ b/transport/internet/udp/hub.go @@ -40,6 +40,14 @@ func ListenUDP(ctx context.Context, address net.Address, port net.Port, streamSe opt(hub) } + if address.Family().IsDomain() && address.Domain() == "localhost" { + address = net.LocalHostIP + } + + if address.Family().IsDomain() { + return nil, errors.New("domain address is not allowed for listening: ", address.Domain()) + } + var sockopt *internet.SocketConfig if streamSettings != nil { sockopt = streamSettings.SocketSettings