From 91c1c30996d186d87d8cce8e7741287b1f6e0f22 Mon Sep 17 00:00:00 2001 From: Csaba Kiraly Date: Mon, 24 Mar 2025 03:24:55 +0100 Subject: [PATCH] p2p/connmanager: avoid dropping trusted peers Signed-off-by: Csaba Kiraly --- p2p/connmanager.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/p2p/connmanager.go b/p2p/connmanager.go index fbfb4ad1cb..634b4805df 100644 --- a/p2p/connmanager.go +++ b/p2p/connmanager.go @@ -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))]