From f68e4d93fd309f329299896a8f1a291fdc08bf39 Mon Sep 17 00:00:00 2001 From: coyaSONG <66289470+coyaSONG@users.noreply.github.com> Date: Tue, 14 Jul 2026 14:32:40 +0900 Subject: [PATCH] cmd/tailscale/cli: fix plain TCP serve status Do not label plain TCP forwarding as TLS over TCP. Render status annotations only when TLS termination or PROXY protocol is configured. Fixes #20367 Change-Id: I3f6507365ceedc2950451810e9715afb85176fc5 Signed-off-by: coyaSONG <66289470+coyaSONG@users.noreply.github.com> --- cmd/tailscale/cli/serve_v2.go | 13 ++++++++----- cmd/tailscale/cli/serve_v2_test.go | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/cmd/tailscale/cli/serve_v2.go b/cmd/tailscale/cli/serve_v2.go index 5b1676ed2..fe7c5730f 100644 --- a/cmd/tailscale/cli/serve_v2.go +++ b/cmd/tailscale/cli/serve_v2.go @@ -1101,16 +1101,19 @@ func (e *serveEnv) messageForPort(sc *ipn.ServeConfig, st *ipnstate.Status, dnsN output.WriteString(fmt.Sprintf("%s %-5s %s\n\n", "|--", t, d)) } } else if tcpHandler != nil { - - tlsStatus := "TLS over TCP" + var annotations []string if tcpHandler.TerminateTLS != "" { - tlsStatus = "TLS terminated" + annotations = append(annotations, "TLS terminated") } if ver := tcpHandler.ProxyProtocol; ver != 0 { - tlsStatus = fmt.Sprintf("%s, PROXY protocol v%d", tlsStatus, ver) + annotations = append(annotations, fmt.Sprintf("PROXY protocol v%d", ver)) } - output.WriteString(fmt.Sprintf("|-- tcp://%s:%d (%s)\n", host, srvPort, tlsStatus)) + output.WriteString(fmt.Sprintf("|-- tcp://%s:%d", host, srvPort)) + if len(annotations) != 0 { + output.WriteString(fmt.Sprintf(" (%s)", strings.Join(annotations, ", "))) + } + output.WriteString("\n") for _, a := range ips { ipp := net.JoinHostPort(a.String(), strconv.Itoa(int(srvPort))) output.WriteString(fmt.Sprintf("|-- tcp://%s\n", ipp)) diff --git a/cmd/tailscale/cli/serve_v2_test.go b/cmd/tailscale/cli/serve_v2_test.go index 994f443b6..531f15f67 100644 --- a/cmd/tailscale/cli/serve_v2_test.go +++ b/cmd/tailscale/cli/serve_v2_test.go @@ -1603,7 +1603,7 @@ func TestMessageForPort(t *testing.T) { expected: strings.Join([]string{ msgServeAvailable, "", - "|-- tcp://foo.test.ts.net:2200 (TLS over TCP)", + "|-- tcp://foo.test.ts.net:2200", "|-- tcp://100.101.101.101:2200", "|-- tcp://[fd7a:115c:a1e0:ab12:4843:cd96:6565:6565]:2200", "|--> tcp://localhost:3000",