diff --git a/wgengine/magicsock/magicsock.go b/wgengine/magicsock/magicsock.go index a19032fb2..5a4a969f6 100644 --- a/wgengine/magicsock/magicsock.go +++ b/wgengine/magicsock/magicsock.go @@ -998,16 +998,17 @@ func (c *Conn) setEndpoints(endpoints []tailcfg.Endpoint) (changed bool) { } c.lastEndpointsTime = time.Now() + if !endpointSetsEqual(endpoints, c.lastEndpoints) { + changed = true + } + // lastEndpoints must be updated before onEndpointsRefreshed, + // as CallMyMaybe sent via this callback must observe the new endpoints. + c.lastEndpoints = endpoints for de, fn := range c.onEndpointRefreshed { go fn() delete(c.onEndpointRefreshed, de) } - - if endpointSetsEqual(endpoints, c.lastEndpoints) { - return false - } - c.lastEndpoints = endpoints - return true + return changed } // SetStaticEndpoints sets static endpoints to the provided value and triggers