wgengine/magicsock: shortcircuit discoEndpoint.heartbeat when its connection is closed

This prevents us from continuing to do unnecessary work
(including logging) after the connection has closed.

Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com>
pull/1142/head
Josh Bleecher Snyder 3 years ago committed by Josh Bleecher Snyder
parent 7c76435bf7
commit 08baa17d9a

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

Loading…
Cancel
Save