p2p/connmanager: avoid dropping trusted peers

Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
This commit is contained in:
Csaba Kiraly 2025-03-24 03:24:55 +01:00
parent 7a49bf09c1
commit 91c1c30996

View file

@ -132,8 +132,10 @@ func (cm *connManager) numPeers() (int, int, int) {
func (cm *connManager) dropRandomPeer() bool {
peers := cm.peersFunc()
// only drop from dialed peers
selectDroppable := func(p *Peer) bool { return !p.rw.is(inboundConn) }
// Only drop from dyndialed peers. Avoid dropping trusted peers.
selectDroppable := func(p *Peer) bool {
return p.rw.is(dynDialedConn) && !p.rw.is(trustedConn)
}
droppable := filter(peers, selectDroppable)
if len(droppable) > 0 {
p := droppable[cm.rand.Intn(len(droppable))]