diff options
author | Matt Corallo <git@bluematt.me> | 2017-03-08 14:41:57 -0500 |
---|---|---|
committer | Matt Corallo <git@bluematt.me> | 2017-03-08 14:41:57 -0500 |
commit | e007b243c4840e44857b5ccf686ed35899e44af0 (patch) | |
tree | 5b24688f7f4bf20b86887e59d223b323a87338fe /src | |
parent | 6996e066b538f03b8aa1f617dbb959b57ff6e727 (diff) | |
download | bitcoin-e007b243c4840e44857b5ccf686ed35899e44af0.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.
Diffstat (limited to 'src')
-rw-r--r-- | src/net.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/net.cpp b/src/net.cpp index 6ff63d4730..12c62d9dae 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; i<nMaxAddnode; i++) + semAddnode->post(); } void CConnman::Stop() @@ -2337,10 +2341,6 @@ void CConnman::Stop() if (threadSocketHandler.joinable()) threadSocketHandler.join(); - if (semAddnode) - for (int i=0; i<nMaxAddnode; i++) - semOutbound->post(); - if (fAddressesInitialized) { DumpData(); |