From 82fcdab7055c15b3f6a3e551cb3fa30a837d5eb0 Mon Sep 17 00:00:00 2001 From: Julien Viard de Galbert Date: Wed, 21 Apr 2021 10:42:27 +0200 Subject: [PATCH] Drop the shallow copies of nodes and peers Now that updateNATEndpoints was updated to discoverNATEndpoints and that the endpoints are overridden by topology instead of mutating the nodes and peers object, we can safely drop this copy. --- pkg/mesh/mesh.go | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/pkg/mesh/mesh.go b/pkg/mesh/mesh.go index 8015d5e..ad5483d 100644 --- a/pkg/mesh/mesh.go +++ b/pkg/mesh/mesh.go @@ -432,9 +432,8 @@ func (m *Mesh) applyTopology() { if !m.nodes[k].Ready() { continue } - // Make a shallow copy of the node. - node := *m.nodes[k] - nodes[k] = &node + // Make it point to the node without copy. + nodes[k] = m.nodes[k] readyNodes++ } // Ensure only ready nodes are considered. @@ -444,9 +443,8 @@ func (m *Mesh) applyTopology() { if !m.peers[k].Ready() { continue } - // Make a shallow copy of the peer. - peer := *m.peers[k] - peers[k] = &peer + // Make it point the peer without copy. + peers[k] = m.peers[k] readyPeers++ } m.nodesGuage.Set(readyNodes) @@ -472,7 +470,6 @@ func (m *Mesh) applyTopology() { oldConf := wireguard.Parse(oldConfRaw) natEndpoints := discoverNATEndpoints(nodes, peers, oldConf, m.logger) nodes[m.hostname].DiscoveredEndpoints = natEndpoints - m.nodes[m.hostname].DiscoveredEndpoints = natEndpoints t, err := NewTopology(nodes, peers, m.granularity, m.hostname, nodes[m.hostname].Endpoint.Port, m.priv, m.subnet, nodes[m.hostname].PersistentKeepalive) if err != nil { level.Error(m.logger).Log("error", err)