diff --git a/adapter/outbound/hysteria2.go b/adapter/outbound/hysteria2.go index 131a8b3c..3e028e0e 100644 --- a/adapter/outbound/hysteria2.go +++ b/adapter/outbound/hysteria2.go @@ -20,7 +20,6 @@ import ( tuicCommon "github.com/metacubex/mihomo/transport/tuic/common" "github.com/metacubex/quic-go" - "github.com/metacubex/randv2" "github.com/metacubex/sing-quic/hysteria2" M "github.com/metacubex/sing/common/metadata" ) @@ -186,30 +185,27 @@ func NewHysteria2(option Hysteria2Option) (*Hysteria2, error) { } var ranges utils.IntRanges[uint16] - var serverAddress []string + var serverPorts []uint16 if option.Ports != "" { ranges, err = utils.NewUnsignedRanges[uint16](option.Ports) if err != nil { return nil, err } ranges.Range(func(port uint16) bool { - serverAddress = append(serverAddress, net.JoinHostPort(option.Server, strconv.Itoa(int(port)))) + serverPorts = append(serverPorts, port) return true }) - if len(serverAddress) > 0 { - clientOptions.ServerAddress = func(ctx context.Context) (*net.UDPAddr, error) { - return resolveUDPAddr(ctx, "udp", serverAddress[randv2.IntN(len(serverAddress))], C.NewDNSPrefer(option.IPVersion)) - } - + if len(serverPorts) > 0 { if option.HopInterval == 0 { option.HopInterval = defaultHopInterval } else if option.HopInterval < minHopInterval { option.HopInterval = minHopInterval } clientOptions.HopInterval = time.Duration(option.HopInterval) * time.Second + clientOptions.ServerPorts = serverPorts } } - if option.Port == 0 && len(serverAddress) == 0 { + if option.Port == 0 && len(serverPorts) == 0 { return nil, errors.New("invalid port") } diff --git a/go.mod b/go.mod index b378a23f..ba5d225d 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,7 @@ require ( github.com/metacubex/randv2 v0.2.0 github.com/metacubex/sing v0.5.3-0.20250504031621-1f99e54c15b7 github.com/metacubex/sing-mux v0.3.2 - github.com/metacubex/sing-quic v0.0.0-20250511034158-b46e0e3e81b2 + github.com/metacubex/sing-quic v0.0.0-20250517090120-462e75d27336 github.com/metacubex/sing-shadowsocks v0.2.9 github.com/metacubex/sing-shadowsocks2 v0.2.3 github.com/metacubex/sing-shadowtls v0.0.0-20250503063515-5d9f966d17a2 diff --git a/go.sum b/go.sum index 890d1712..7fb37c7b 100644 --- a/go.sum +++ b/go.sum @@ -122,6 +122,8 @@ github.com/metacubex/sing-mux v0.3.2 h1:nJv52pyRivHcaZJKk2JgxpaVvj1GAXG81scSa9N7 github.com/metacubex/sing-mux v0.3.2/go.mod h1:3rt1soewn0O6j89GCLmwAQFsq257u0jf2zQSPhTL3Bw= github.com/metacubex/sing-quic v0.0.0-20250511034158-b46e0e3e81b2 h1:wfmYgtECbEYo1slMtyo+2kMqscYYDSjU/TVgS3018F4= github.com/metacubex/sing-quic v0.0.0-20250511034158-b46e0e3e81b2/go.mod h1:P1kd57U6XXmXv9PbwWdznUGT0k9bKgFJXF0fEORbIlk= +github.com/metacubex/sing-quic v0.0.0-20250517090120-462e75d27336 h1:5BgpaFkTzkePwF1A8rmhCqgyOMG79BLsAhFR8W8SiRo= +github.com/metacubex/sing-quic v0.0.0-20250517090120-462e75d27336/go.mod h1:JPTpf7fpnojsSuwRJExhSZSy63pVbp3VM39+zj+sAJM= github.com/metacubex/sing-shadowsocks v0.2.9 h1:2e++13WNN7EGjGtvrGLUzW1xrCdQbW2gIFpgw5GEw00= github.com/metacubex/sing-shadowsocks v0.2.9/go.mod h1:CJSEGO4FWQAWe+ZiLZxCweGdjRR60A61SIoVjdjQeBA= github.com/metacubex/sing-shadowsocks2 v0.2.3 h1:v3rNS/5Ywh0NIZ6VU/NmdERQIN5RePzyxCFeQsU4Cx0=