From 11c57b90979b3b46e334c0f2865af59b649c9ec7 Mon Sep 17 00:00:00 2001 From: Chih-Hsuan Yen Date: Mon, 5 Jul 2021 19:19:56 +0800 Subject: [PATCH] lib/connections: Resolve IPv6 for quic6:// peers (fixes #7809) (#7810) Before this patch, IPv4-compatible addresses (::ffff:aaa.bbb.ccc.ddd) may be used if a quic6://some.domain:port is specified and both IPv4 and IPv6 addresses exist for that domain name. --- lib/connections/quic_dial.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/connections/quic_dial.go b/lib/connections/quic_dial.go index 83c6246f5..a952d1ecd 100644 --- a/lib/connections/quic_dial.go +++ b/lib/connections/quic_dial.go @@ -13,6 +13,7 @@ import ( "crypto/tls" "net" "net/url" + "strings" "time" "github.com/lucas-clemente/quic-go" @@ -45,7 +46,9 @@ type quicDialer struct { func (d *quicDialer) Dial(ctx context.Context, _ protocol.DeviceID, uri *url.URL) (internalConn, error) { uri = fixupPort(uri, config.DefaultQUICPort) - addr, err := net.ResolveUDPAddr("udp", uri.Host) + network := strings.ReplaceAll(uri.Scheme, "quic", "udp") + + addr, err := net.ResolveUDPAddr(network, uri.Host) if err != nil { return internalConn{}, err }