From 20de0ca335242f26c828a307cd6adb9852ba1caa Mon Sep 17 00:00:00 2001 From: Toby Date: Sat, 5 Nov 2022 11:11:25 -0700 Subject: [PATCH] fix: quic-go ipv6 server name handling --- go.mod | 2 +- go.sum | 4 ++-- pkg/core/client.go | 13 +------------ 3 files changed, 4 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index b249b1e..b2d13e3 100644 --- a/go.mod +++ b/go.mod @@ -89,6 +89,6 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect ) -replace github.com/lucas-clemente/quic-go => github.com/HyNetwork/quic-go v0.30.1-0.20221031062428-2bee5c4b1bf8 +replace github.com/lucas-clemente/quic-go => github.com/HyNetwork/quic-go v0.30.1-0.20221105180419-83715d7269a8 replace github.com/LiamHaworth/go-tproxy => github.com/HyNetwork/go-tproxy v0.0.0-20221025153553-ed04a2935f88 diff --git a/go.sum b/go.sum index 38e97ec..842463e 100644 --- a/go.sum +++ b/go.sum @@ -76,8 +76,8 @@ github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3 github.com/Dreamacro/go-shadowsocks2 v0.1.7/go.mod h1:8p5G4cAj5ZlXwUR+Ww63gfSikr8kvw8uw3TDwLAJpUc= github.com/HyNetwork/go-tproxy v0.0.0-20221025153553-ed04a2935f88 h1:gZbrSMb8ojmSGxC0C4L3gFwgYFf1xvAnU2gCyDmsbSA= github.com/HyNetwork/go-tproxy v0.0.0-20221025153553-ed04a2935f88/go.mod h1:u7+cv3PYlgsz2jDM/qi/zl17zi03OO78Bhe5nlLOrVc= -github.com/HyNetwork/quic-go v0.30.1-0.20221031062428-2bee5c4b1bf8 h1:r9GrPFoBINn+vKK91P8TGg+Z1N7yhZtK68Kpkg4rdyQ= -github.com/HyNetwork/quic-go v0.30.1-0.20221031062428-2bee5c4b1bf8/go.mod h1:ssOrRsOmdxa768Wr78vnh2B8JozgLsMzG/g+0qEC7uk= +github.com/HyNetwork/quic-go v0.30.1-0.20221105180419-83715d7269a8 h1:FBo40lMrk1bZZzJRJx8U+bQUPhLDGTUJ/Q5NV5BbO4Q= +github.com/HyNetwork/quic-go v0.30.1-0.20221105180419-83715d7269a8/go.mod h1:ssOrRsOmdxa768Wr78vnh2B8JozgLsMzG/g+0qEC7uk= github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= diff --git a/pkg/core/client.go b/pkg/core/client.go index 397bd7c..7b16440 100644 --- a/pkg/core/client.go +++ b/pkg/core/client.go @@ -26,7 +26,6 @@ var ErrClosed = errors.New("closed") type Client struct { serverAddr string - serverName string // QUIC SNI sendBPS, recvBPS uint64 auth []byte @@ -52,18 +51,8 @@ func NewClient(serverAddr string, auth []byte, tlsConfig *tls.Config, quicConfig pktConnFunc pktconns.ClientPacketConnFunc, sendBPS uint64, recvBPS uint64, quicReconnectFunc func(err error), ) (*Client, error) { quicConfig.DisablePathMTUDiscovery = quicConfig.DisablePathMTUDiscovery || pmtud.DisablePathMTUDiscovery - // QUIC wants server name, but our serverAddr is usually host:port, - // so we try to extract it from serverAddr. - serverName, _, err := net.SplitHostPort(serverAddr) - if err != nil { - // It's possible that we have some weird serverAddr combined with weird PacketConn implementation, - // that doesn't follow the standard host:port format. So it's ok if we run into error here. - // Server name should be set in tlsConfig in that case. - serverName = "" - } c := &Client{ serverAddr: serverAddr, - serverName: serverName, sendBPS: sendBPS, recvBPS: recvBPS, auth: auth, @@ -92,7 +81,7 @@ func (c *Client) connect() error { return err } // Dial QUIC - quicConn, err := quic.Dial(pktConn, sAddr, c.serverName, c.tlsConfig, c.quicConfig) + quicConn, err := quic.Dial(pktConn, sAddr, c.serverAddr, c.tlsConfig, c.quicConfig) if err != nil { _ = pktConn.Close() return err