Skip to content

Commit 35c742d

Browse files
committed
🧂 Work around golang/go#52264
1 parent b330ff9 commit 35c742d

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

service/client.go

+8
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,14 @@ func (c *client) Start() (err error) {
8989
c.proxyAddr = rudpaddr.AddrPort()
9090
}
9191

92+
// Workaround for https://github.com/golang/go/issues/52264
93+
if c.proxyAddr.Addr().Is4() {
94+
addr6 := c.proxyAddr.Addr().As16()
95+
ip := netip.AddrFrom16(addr6)
96+
port := c.proxyAddr.Port()
97+
c.proxyAddr = netip.AddrPortFrom(ip, port)
98+
}
99+
92100
// maxProxyPacketSize = MTU - IP header length - UDP header length
93101
if c.proxyAddr.Addr().Is4() {
94102
c.maxProxyPacketSize = c.config.MTU - IPv4HeaderLength - UDPHeaderLength

service/server.go

+8
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,14 @@ func (s *server) Start() (err error) {
9494
s.wgAddr = rudpaddr.AddrPort()
9595
}
9696

97+
// Workaround for https://github.com/golang/go/issues/52264
98+
if s.wgAddr.Addr().Is4() {
99+
addr6 := s.wgAddr.Addr().As16()
100+
ip := netip.AddrFrom16(addr6)
101+
port := s.wgAddr.Port()
102+
s.wgAddr = netip.AddrPortFrom(ip, port)
103+
}
104+
97105
// Start listener.
98106
var serr error
99107
s.proxyConn, err, serr = conn.ListenUDP("udp", s.config.ProxyListen, s.config.ProxyFwmark)

0 commit comments

Comments
 (0)