From 79719f05a97c3ed2fc41d103a0dca1f8750ef87c Mon Sep 17 00:00:00 2001 From: Will Norris Date: Tue, 14 Nov 2023 12:07:51 -0800 Subject: [PATCH] ipn/ipnlocal: remove web client listeners after close This prevents a panic in some cases where WebClientShutdown is called multiple times. Updates tailscale/corp#14335 Signed-off-by: Will Norris --- ipn/ipnlocal/web_client.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ipn/ipnlocal/web_client.go b/ipn/ipnlocal/web_client.go index 8180f929c..51de93c38 100644 --- a/ipn/ipnlocal/web_client.go +++ b/ipn/ipnlocal/web_client.go @@ -79,8 +79,9 @@ func (b *LocalBackend) WebClientShutdown() { b.mu.Lock() server := b.webClient.server b.webClient.server = nil - for _, ln := range b.webClientListeners { + for ap, ln := range b.webClientListeners { ln.Close() + delete(b.webClientListeners, ap) } b.mu.Unlock() // release lock before shutdown if server != nil {