summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-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,
})