From 7f197ede5157754f1aa3b703d911c1f0dad524da Mon Sep 17 00:00:00 2001 From: Skyxim Date: Mon, 29 Aug 2022 12:10:46 +0800 Subject: [PATCH 1/3] fix: hysteria udp crash --- adapter/outbound/hysteria.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/adapter/outbound/hysteria.go b/adapter/outbound/hysteria.go index adc904a2..9446cf93 100644 --- a/adapter/outbound/hysteria.go +++ b/adapter/outbound/hysteria.go @@ -72,6 +72,9 @@ func (h *Hysteria) ListenPacketContext(ctx context.Context, metadata *C.Metadata hyDialer: func() (net.PacketConn, error) { return dialer.ListenPacket(ctx, "udp", "", h.Base.DialOptions(opts...)...) }, + remoteAddr: func(addr string) (net.Addr, error) { + return resolveUDPAddrWithPrefer("udp", addr, h.prefer) + }, } udpConn, err := h.client.DialUDP(&hdc) if err != nil { From d69e0bce4a065ea72c27fdd82b48da25b442adea Mon Sep 17 00:00:00 2001 From: Skyxim Date: Mon, 29 Aug 2022 13:04:48 +0800 Subject: [PATCH 2/3] fix: resolve ip of udp proxy error --- adapter/outbound/util.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/adapter/outbound/util.go b/adapter/outbound/util.go index 0b859630..d5219131 100644 --- a/adapter/outbound/util.go +++ b/adapter/outbound/util.go @@ -104,7 +104,7 @@ func resolveUDPAddrWithPrefer(network, address string, prefer C.DNSPrefer) (*net ip = fallback } default: - // C.IPv4Prefer, C.DualStack and other + // C.IPv4Prefer, C.DualStack and other var ips []netip.Addr ips, err = resolver.ResolveAllIPProxyServerHost(host) var fallback netip.Addr @@ -119,7 +119,10 @@ func resolveUDPAddrWithPrefer(network, address string, prefer C.DNSPrefer) (*net } } } - ip = fallback + + if !ip.IsValid() && fallback.IsValid() { + ip = fallback + } } } From d823dde43c537f8fdcb77c6a06af58a73046b2e8 Mon Sep 17 00:00:00 2001 From: Skyxim Date: Mon, 29 Aug 2022 13:07:38 +0800 Subject: [PATCH 3/3] chore: update doc --- docs/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/config.yaml b/docs/config.yaml index 9240bf96..53ed7416 100644 --- a/docs/config.yaml +++ b/docs/config.yaml @@ -169,7 +169,7 @@ proxies: # ipv4-prefer:优先使用 IPv4 对于 TCP 会进行双栈解析,并发链接但是优先使用 IPv4 链接, # UDP 则为双栈解析,获取结果中的第一个 IPv4 # ipv6-prefer 同 ipv4-prefer - # 现有协议都支持此参数 + # 现有协议都支持此参数,TCP 效果仅在开启 tcp-concurrent 生效 - name: "ss2" type: ss server: server