From d338384f9e4eb6953d11e1c5bd323f898a4ae2f4 Mon Sep 17 00:00:00 2001 From: Zsolt Felfoldi Date: Fri, 3 Jan 2020 17:47:50 +0100 Subject: [PATCH] les: fixed deadlock --- les/clientpool.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/les/clientpool.go b/les/clientpool.go index 7bb1ad7cc4..42a7d06fc2 100644 --- a/les/clientpool.go +++ b/les/clientpool.go @@ -243,7 +243,7 @@ func newClientPool(db ethdb.Database, minCap, freeClientCap uint64, clock mclock pool.tryActivateClients() for _, c := range pool.dropInactivePeers[pool.dropInactiveCounter] { if _, ok := pool.connectedMap[c.id]; ok && !c.active && !c.priority { - pool.disconnect(c.peer) + pool.disconnectLocked(c.peer) } } delete(pool.dropInactivePeers, pool.dropInactiveCounter) @@ -406,6 +406,10 @@ func (f *clientPool) disconnect(p clientPeer) { f.lock.Lock() defer f.lock.Unlock() + f.disconnectLocked(p) +} + +func (f *clientPool) disconnectLocked(p clientPeer) { // Short circuit if client pool is already closed. if f.closed { return