summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@tailscale.com>2025-09-22 17:11:25 -0700
committerBrad Fitzpatrick <bradfitz@tailscale.com>2025-09-22 17:14:00 -0700
commit7b7265c8152fa24231c49fe5faa6362311cb2dbd (patch)
tree63ab18106fd2f76d0e5188f8f0c467400245ada3
parente582fb9b53e56c39353b665f92eb7a2aeacdbf1d (diff)
downloadtailscale-bradfitz/cli_ts2021_hang_test.tar.xz
tailscale-bradfitz/cli_ts2021_hang_test.zip
cmd/tailscale: add debug hacksbradfitz/cli_ts2021_hang_test
Updates tailscale/corp#32586 Change-Id: I24c63ba122dbd3c3a4df005f178d799dd2a2d2d2 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
-rw-r--r--cmd/tailscale/cli/debug.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/cmd/tailscale/cli/debug.go b/cmd/tailscale/cli/debug.go
index b3170d000..8c77a52cb 100644
--- a/cmd/tailscale/cli/debug.go
+++ b/cmd/tailscale/cli/debug.go
@@ -1116,6 +1116,34 @@ func tryConnect(ctx context.Context, controlPublic key.MachinePublic, noiseDiale
log.Printf("final underlying conn: %v / %v", conn.LocalAddr(), conn.RemoteAddr())
+ log.Printf("Reading header...")
+ t0 := time.Now()
+ hdr := make([]byte, 9)
+ n, err := io.ReadFull(conn, hdr) // just to verify conn is usable
+ if err != nil {
+ log.Printf("Read error: %v", err)
+ }
+ //log.Fatalf("Read = %d %q, %v (after %v)", n, hdr[:n], err, time.Since(t0))
+
+ epLen := binary.BigEndian.Uint32(hdr[5:])
+ if epLen > 10<<20 {
+ log.Fatal("invalid early payload length")
+ }
+ payBuf := make([]byte, epLen)
+ if _, err := io.ReadFull(conn, payBuf); err != nil {
+ log.Fatal(err)
+ }
+ log.Printf("got %d-byte early payload: %s", len(payBuf), payBuf)
+
+ t0 = time.Now()
+ for {
+ n, err = io.ReadFull(conn, hdr) // just to verify conn is usable
+ log.Printf("Read = %d %q, %v (after %v)", n, hdr[:n], err, time.Since(t0))
+ if err != nil {
+ log.Fatal(err)
+ }
+ }
+
h2Transport, err := http2.ConfigureTransports(&http.Transport{
IdleConnTimeout: time.Second,
})