From 57cfc624184bef01c7ad3e6cf8bee85eb2b94f77 Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Fri, 12 Sep 2025 16:37:45 +0200 Subject: [PATCH] mapper: only send minimal selfnode outside of full update Signed-off-by: Kristoffer Dalby --- hscontrol/mapper/builder.go | 13 +++---------- hscontrol/mapper/mapper.go | 1 - 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/hscontrol/mapper/builder.go b/hscontrol/mapper/builder.go index 819d23a3..161efef2 100644 --- a/hscontrol/mapper/builder.go +++ b/hscontrol/mapper/builder.go @@ -68,24 +68,17 @@ func (b *MapResponseBuilder) WithCapabilityVersion(capVer tailcfg.CapabilityVers // WithSelfNode adds the requesting node to the response. func (b *MapResponseBuilder) WithSelfNode() *MapResponseBuilder { - nodeView, ok := b.mapper.state.GetNodeByID(b.nodeID) + nv, ok := b.mapper.state.GetNodeByID(b.nodeID) if !ok { b.addError(errors.New("node not found")) return b } - // Always use batcher's view of online status for self node - // The batcher respects grace periods for logout scenarios - node := nodeView.AsStruct() - // if b.mapper.batcher != nil { - // node.IsOnline = ptr.To(b.mapper.batcher.IsConnected(b.nodeID)) - // } - _, matchers := b.mapper.state.Filter() tailnode, err := tailNode( - node.View(), b.capVer, b.mapper.state, + nv, b.capVer, b.mapper.state, func(id types.NodeID) []netip.Prefix { - return policy.ReduceRoutes(node.View(), b.mapper.state.GetNodePrimaryRoutes(id), matchers) + return policy.ReduceRoutes(nv, b.mapper.state.GetNodePrimaryRoutes(id), matchers) }, b.mapper.cfg) if err != nil { diff --git a/hscontrol/mapper/mapper.go b/hscontrol/mapper/mapper.go index 5e9b9a13..880b4608 100644 --- a/hscontrol/mapper/mapper.go +++ b/hscontrol/mapper/mapper.go @@ -190,7 +190,6 @@ func (m *mapper) peerChangeResponse( return m.NewMapResponseBuilder(nodeID). WithDebugType(changeResponseDebug). WithCapabilityVersion(capVer). - WithSelfNode(). WithUserProfiles(peers). WithPeerChanges(peers). Build()