wgengine/magicsock: add an explicit else branch to peerMap update.

Clarifies that the replace+delete of peerinfo data is only when peerInfo
already exists.

Signed-off-by: David Anderson <danderson@tailscale.com>
This commit is contained in:
David Anderson 2021-10-18 13:05:12 -07:00
parent 1c56643136
commit e7eb46bced
2 changed files with 7 additions and 7 deletions

View File

@ -112,7 +112,6 @@ type Ping struct {
// NodeKey is allegedly the ping sender's wireguard public key.
// Old clients (~1.16.0 and earlier) don't send this field.
// It shouldn't be trusted by itself, but can be combined with
// netmap data to reduce the discokey:nodekey relation from 1:N to
// 1:1.

View File

@ -172,12 +172,13 @@ func (m *peerMap) upsertEndpoint(ep *endpoint) {
if pi == nil {
pi = newPeerInfo(ep)
m.byNodeKey[ep.publicKey] = pi
}
old := pi.ep
pi.ep = ep
if old != nil && old.discoKey != ep.discoKey {
delete(m.byDiscoKey, old.discoKey)
delete(m.nodesOfDisco[old.discoKey], ep.publicKey)
} else {
old := pi.ep
pi.ep = ep
if old != nil && old.discoKey != ep.discoKey {
delete(m.byDiscoKey, old.discoKey)
delete(m.nodesOfDisco[old.discoKey], ep.publicKey)
}
}
if !ep.discoKey.IsZero() {
m.byDiscoKey[ep.discoKey] = pi