From d2548a4f9704b1f475b4068d2d1686cf3780f742 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. Github-Pull: #9953 Rebased-From: e007b243c4840e44857b5ccf686ed35899e44af0 --- src/net.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/net.cpp b/src/net.cpp index de5fc2969..e35a89e74 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -2321,6 +2321,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() @@ -2336,10 +2340,6 @@ void CConnman::Stop() if (threadSocketHandler.joinable()) threadSocketHandler.join(); - if (semAddnode) - for (int i=0; ipost(); - if (fAddressesInitialized) { DumpData();