aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Corallo <git@bluematt.me>2017-03-08 14:41:57 -0500
committerMatt Corallo <git@bluematt.me>2017-03-17 14:55:43 -0700
commitd2548a4f9704b1f475b4068d2d1686cf3780f742 (patch)
tree67be6d9e3dff4be3eeae890e37d1d38500af4dcb
parent43a987c1cbcd04b9c59052606c3c31c56abc826e (diff)
downloadbitcoin-d2548a4f9704b1f475b4068d2d1686cf3780f742.tar.xz
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
-rw-r--r--src/net.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/net.cpp b/src/net.cpp
index de5fc29693..e35a89e749 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; i<nMaxAddnode; i++)
+ semAddnode->post();
}
void CConnman::Stop()
@@ -2336,10 +2340,6 @@ void CConnman::Stop()
if (threadSocketHandler.joinable())
threadSocketHandler.join();
- if (semAddnode)
- for (int i=0; i<nMaxAddnode; i++)
- semOutbound->post();
-
if (fAddressesInitialized)
{
DumpData();