cmd/tailscale: fix IPN message reading stall in tailscale status -web
Fixes
Updates
@@ -65,7 +65,17 @@ func runStatus(ctx context.Context, args []string) error {
log.Fatal(*n.ErrMessage)
}
if n.Status != nil {
- ch <- n.Status
+ select {
+ case ch <- n.Status:
+ default:
+ // A status update from somebody else's request.
+ // Ignoring this matters mostly for "tailscale status -web"
+ // mode, otherwise the channel send would block forever
+ // and pump would stop reading from tailscaled, which
+ // previously caused tailscaled to block (while holding
+ // a mutex), backing up unrelated clients.
+ // See https://github.com/tailscale/tailscale/issues/1234
+ }
}
})
go pump(ctx, bc, c)
