From e007b243c4840e44857b5ccf686ed35899e44af0 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Wed, 8 Mar 2017 14:41:57 -0500 Subject: [PATCH] Fix shutdown hang with >= 8 -addnodes set We previously would block waiting for a CSemaphoreGrant in ThreadOpenAddedConnections, when we did not need to. This would block as the posts in CConnman shutdown were both to the wrong semaphore and in the wrong location. --- src/net.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/net.cpp b/src/net.cpp index 6ff63d473..12c62d9da 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -2322,6 +2322,10 @@ void CConnman::Interrupt() if (semOutbound) for (int i=0; i<(nMaxOutbound + nMaxFeeler); i++) semOutbound->post(); + + if (semAddnode) + for (int i=0; ipost(); } void CConnman::Stop() @@ -2337,10 +2341,6 @@ void CConnman::Stop() if (threadSocketHandler.joinable()) threadSocketHandler.join(); - if (semAddnode) - for (int i=0; ipost(); - if (fAddressesInitialized) { DumpData();