[management] Compensate for a possible nil peer when returning "empty" network map (#8285)

* we somehow can get a nil peer when returning empty components; this fix compensates for the issue, but doesn't fix the root cause (which is unknown atm)

Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io>

* fix test

Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io>

---------

Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io>
This commit is contained in:
dmitri-netbird
2026-10-22 20:27:53 +02:00
committed by GitHub
parent 48ecdfbcfc
commit f548a74c7c
5 changed files with 9 additions and 3 deletions
@@ -20,6 +20,7 @@ const wgKeyRawLen = 32
// computed alongside the components in the network_map controller and reused
// from the legacy proto path) and the dns_domain string.
type ComponentsEnvelopeInput struct {
Peer *nmdata.Peer // only used when encoding "empty" component maps
Components *types.NetworkMapComponents
PeerConfig *proto.PeerConfig
DNSDomain string
@@ -59,8 +60,8 @@ func EncodeNetworkMapEnvelope(in ComponentsEnvelopeInput) *proto.NetworkMapEnvel
Serial: networkSerial(c.Network),
Network: toAccountNetwork(c.Network),
PeerConfig: in.PeerConfig,
// components.Peers always contains the target peer
Peers: []*proto.PeerCompact{toPeerCompact(c.Peers[c.PeerID])},
// components.Peers may not contain the target peer
Peers: []*proto.PeerCompact{toPeerCompact(in.Peer)},
DnsDomain: in.DNSDomain,
DnsForwarderPort: in.DNSForwarderPort,
UserIdClaim: in.UserIDClaim,