diff --git a/wgengine/magicsock/magicsock.go b/wgengine/magicsock/magicsock.go index ad5d1003e..40089cec2 100644 --- a/wgengine/magicsock/magicsock.go +++ b/wgengine/magicsock/magicsock.go @@ -2280,6 +2280,13 @@ func (c *Conn) Close() error { return err } +// isClosed reports whether c is closed. +func (c *Conn) isClosed() bool { + c.mu.Lock() + defer c.mu.Unlock() + return c.closed +} + func (c *Conn) goroutinesRunningLocked() bool { if c.endpointsUpdateActive { return true @@ -3017,6 +3024,10 @@ func (de *discoEndpoint) heartbeat() { de.heartBeatTimer = nil + if de.c.isClosed() { + return + } + if de.lastSend.IsZero() { // Shouldn't happen. return