diff --git a/control/controlclient/map.go b/control/controlclient/map.go index 96ef88beb..025907962 100644 --- a/control/controlclient/map.go +++ b/control/controlclient/map.go @@ -62,7 +62,7 @@ type mapSession struct { onSelfNodeChanged func(*netmap.NetworkMap) // Fields storing state over the course of multiple MapResponses. - lastNode *tailcfg.Node + lastNode tailcfg.NodeView lastDNSConfig *tailcfg.DNSConfig lastDERPMap *tailcfg.DERPMap lastUserProfile map[tailcfg.UserID]tailcfg.UserProfile @@ -182,7 +182,7 @@ func (ms *mapSession) HandleNonKeepAliveMapResponse(ctx context.Context, resp *t } // Call Node.InitDisplayNames on any changed nodes. - initDisplayNames(cmpx.Or(resp.Node, ms.lastNode).View(), resp) + initDisplayNames(cmpx.Or(resp.Node.View(), ms.lastNode), resp) nm := ms.netmapForResponse(resp) @@ -312,17 +312,17 @@ func (ms *mapSession) netmapForResponse(resp *tailcfg.MapResponse) *netmap.Netwo } if resp.Node != nil { - ms.lastNode = resp.Node - } - if node := ms.lastNode.Clone(); node != nil { - nm.SelfNode = node.View() - nm.Expiry = node.KeyExpiry - nm.Name = node.Name - nm.Addresses = filterSelfAddresses(node.Addresses) - if node.Hostinfo.Valid() { - nm.Hostinfo = *node.Hostinfo.AsStruct() + ms.lastNode = resp.Node.View() + } + if node := ms.lastNode; node.Valid() { + nm.SelfNode = node + nm.Expiry = node.KeyExpiry() + nm.Name = node.Name() + nm.Addresses = filterSelfAddresses(node.Addresses().AsSlice()) + if node.Hostinfo().Valid() { + nm.Hostinfo = *node.Hostinfo().AsStruct() } - if node.MachineAuthorized { + if node.MachineAuthorized() { nm.MachineStatus = tailcfg.MachineAuthorized } else { nm.MachineStatus = tailcfg.MachineUnauthorized