From 7a49bf09c1f0933e831964ec0c4037b51775bcd1 Mon Sep 17 00:00:00 2001 From: Csaba Kiraly Date: Mon, 24 Mar 2025 03:04:41 +0100 Subject: [PATCH] p2p/connmanager: only drop from dialed peers Signed-off-by: Csaba Kiraly --- p2p/connmanager.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/p2p/connmanager.go b/p2p/connmanager.go index 640cbdcd6f..fbfb4ad1cb 100644 --- a/p2p/connmanager.go +++ b/p2p/connmanager.go @@ -131,7 +131,10 @@ func (cm *connManager) numPeers() (int, int, int) { // dropRandomPeer selects one of the peers randomly and drops it from the peer pool. func (cm *connManager) dropRandomPeer() bool { peers := cm.peersFunc() - droppable := peers + + // only drop from dialed peers + selectDroppable := func(p *Peer) bool { return !p.rw.is(inboundConn) } + droppable := filter(peers, selectDroppable) if len(droppable) > 0 { p := droppable[cm.rand.Intn(len(droppable))] cm.log.Trace("dropping random peer", "id", p.ID(), "duration", common.PrettyDuration(mclock.Now()-p.created), "peercountbefore", len(peers))