cmd/tailscale: fix IPN message reading stall in tailscale status -web

Fixes #1234
Updates #1254

(cherry picked from commit 9a70789853)
This commit is contained in:
Brad Fitzpatrick 2021-02-02 14:48:39 -08:00
parent 1c238cdce6
commit 71b13b5ac2

View File

@ -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)