From 76686f230b4f4ebbb39d53f974c475f1e38eb69b Mon Sep 17 00:00:00 2001 From: Spike Curtis Date: Thu, 30 Nov 2023 12:21:18 +0400 Subject: [PATCH] fix: prevent connIO from panicking in race between Close and Enqueue --- enterprise/tailnet/connio.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/enterprise/tailnet/connio.go b/enterprise/tailnet/connio.go index 9454279adcb4c..83c1d8a2b9c3c 100644 --- a/enterprise/tailnet/connio.go +++ b/enterprise/tailnet/connio.go @@ -197,9 +197,8 @@ func (c *connIO) UniqueID() uuid.UUID { func (c *connIO) Enqueue(resp *proto.CoordinateResponse) error { atomic.StoreInt64(&c.lastWrite, time.Now().Unix()) c.mu.Lock() - closed := c.closed - c.mu.Unlock() - if closed { + defer c.mu.Unlock() + if c.closed { return xerrors.New("connIO closed") } select {