From cc373a6612cf5c7b01d91ceea0708c12242b8b76 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 20 Nov 2025 21:40:47 +0000 Subject: [PATCH 1/2] Bump Go to version from 1.24.6 to 1.25.4 --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 2b98f0c47..39930175b 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/replicatedhq/troubleshoot -go 1.24.6 +go 1.25.4 require ( github.com/Masterminds/sprig/v3 v3.3.0 From 438c25667e27dd5104577e2eb35728a150302240 Mon Sep 17 00:00:00 2001 From: Nicholas Mullen Date: Thu, 20 Nov 2025 17:38:12 -0600 Subject: [PATCH 2/2] fix: use net.JoinHostPort for IPv6 compatibility Fix IPv6 address formatting in namespace-pinger.go by replacing fmt.Sprintf with net.JoinHostPort, which correctly handles both IPv4 and IPv6 addresses. Changes: - PingTCP: Use net.JoinHostPort for client connections - startTCPEchoServer: Use net.JoinHostPort for server listener This fixes go vet errors introduced by Go 1.25's stricter checks: address format "%s:%d" does not work with IPv6 IPv4 example: 192.168.1.1:8080 IPv6 example: [::1]:8080 (brackets added automatically) --- pkg/namespaces/namespace-pinger.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkg/namespaces/namespace-pinger.go b/pkg/namespaces/namespace-pinger.go index b6f23d720..c3afe1acd 100644 --- a/pkg/namespaces/namespace-pinger.go +++ b/pkg/namespaces/namespace-pinger.go @@ -5,6 +5,7 @@ package namespaces import ( "fmt" "net" + "strconv" "time" ) @@ -51,7 +52,7 @@ func (n *NamespacePinger) PingUDP(dst net.IP) error { func (n *NamespacePinger) PingTCP(dst net.IP) error { n.cfg.Logf("reaching to %q from %q with tcp", dst, n.InternalIP) pinger := func() error { - addr := fmt.Sprintf("%s:%d", dst, n.cfg.Port) + addr := net.JoinHostPort(dst.String(), strconv.Itoa(n.cfg.Port)) conn, err := net.DialTimeout("tcp", addr, n.cfg.Timeout) if err != nil { return fmt.Errorf("error dialing tcp: %w", err) @@ -90,7 +91,7 @@ func (n *NamespacePinger) StartTCPEchoServer(errors chan error) { // received, the server ends. Callers must wait until the ready channel is // closed before they can start sending packets. func (n *NamespacePinger) startTCPEchoServer(ready chan struct{}) (err error) { - addr := fmt.Sprintf("%s:%d", n.InternalIP, n.cfg.Port) + addr := net.JoinHostPort(n.InternalIP.String(), strconv.Itoa(n.cfg.Port)) n.cfg.Logf("starting tcp echo server on namespace %q(%q)", n.name, addr) if err = n.Join(); err != nil {