From 8fa216aa27dc70effaa7726df3f0ad6fce5d8b2c Mon Sep 17 00:00:00 2001 From: Thomas Krennwallner Date: Fri, 14 Mar 2025 14:45:11 -0400 Subject: [PATCH] Fix IPv6 address handling in LAN <-> WAN join flooder When `advertise_addr` is an IPv6 address, Consul WAN federation breaks and we get a constant stream of warnings: ``` [WARN] agent.server.memberlist.wan: memberlist: Failed to resolve i-02a3c94b46768b01f.aws-eu-west-1/2a05:d018:18a3:f202:64d9:1621:ab22:df45:8302: lookup 2a05:d018:18a3:f202:64d9:1621:ab22:df45:8302: no such host ``` The LAN <-> WAN join flooder creates IPv6 addresses without square brackets with `fmt.Sprintf("%s:%d", addr, s.WanJoinPort)`, which confuses `net.SplitHostPort` in `memberlist.resolveAddr`. Fixes hashicorp/consul#22225 --- agent/consul/server.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/consul/server.go b/agent/consul/server.go index e33fd493ae45..a3801fa17270 100644 --- a/agent/consul/server.go +++ b/agent/consul/server.go @@ -781,7 +781,7 @@ func NewServer(config *Config, flat Deps, externalGRPCServer *grpc.Server, if err != nil { return "", err } - return fmt.Sprintf("%s:%d", addr, s.WanJoinPort), nil + return net.JoinHostPort(addr, strconv.Itoa(s.WanJoinPort)), nil } go s.Flood(addrFn, s.serfWAN) }