mirror of https://github.com/tailscale/tailscale/
wgengine/magicsock: fix occasional deadlock on Conn.Close on c.derpStarted
The deadlock was: * Conn.Close was called, which acquired c.mu * Then this goroutine scheduled: if firstDerp { startGate = c.derpStarted go func() { dc.Connect(ctx) close(c.derpStarted) }() } * The getRegion hook for that derphttp.Client then ran, which also tries to acquire c.mu. This change makes that hook first see if we're already in a closing state and then it can pretend that region doesn't exist.pull/607/head
parent
bca9fe35ba
commit
37903a9056
Loading…
Reference in New Issue