discovery+gossip: make sure we dont advertise node anns with bad DNS

We may have already persisted node announcements that have multiple DNS
addresses since we may have received them before updating our code to
check for this. So here we just make sure not to send these on to our
peers.
This commit is contained in:
Elle Mouton
2025-08-06 13:42:47 +02:00
committed by Mohamed Awnallah
parent a7ae21d685
commit 5844bb0477
2 changed files with 23 additions and 5 deletions

View File

@@ -192,6 +192,13 @@ func (c *ChanSeries) UpdatesInHorizon(chain chainhash.Hash,
return nil, err
}
if err := netann.ValidateNodeAnnFields(nodeUpdate); err != nil {
log.Debugf("Skipping forwarding invalid node "+
"announcement %x: %v", nodeAnn.PubKeyBytes, err)
continue
}
updates = append(updates, nodeUpdate)
}
@@ -296,8 +303,11 @@ func (c *ChanSeries) FetchChanAnns(chain chainhash.Hash,
return nil, err
}
chanAnns = append(chanAnns, nodeAnn)
nodePubsSent[nodePub] = struct{}{}
err = netann.ValidateNodeAnnFields(nodeAnn)
if err == nil {
chanAnns = append(chanAnns, nodeAnn)
nodePubsSent[nodePub] = struct{}{}
}
}
}
if edge2 != nil {
@@ -315,8 +325,11 @@ func (c *ChanSeries) FetchChanAnns(chain chainhash.Hash,
return nil, err
}
chanAnns = append(chanAnns, nodeAnn)
nodePubsSent[nodePub] = struct{}{}
err = netann.ValidateNodeAnnFields(nodeAnn)
if err == nil {
chanAnns = append(chanAnns, nodeAnn)
nodePubsSent[nodePub] = struct{}{}
}
}
}
}

View File

@@ -2229,7 +2229,12 @@ func (d *AuthenticatedGossiper) fetchNodeAnn(ctx context.Context,
return nil, err
}
return node.NodeAnnouncement(true)
nodeAnn, err := node.NodeAnnouncement(true)
if err != nil {
return nil, err
}
return nodeAnn, netann.ValidateNodeAnnFields(nodeAnn)
}
// isMsgStale determines whether a message retrieved from the backing