Browse Source

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: e007b243c4
0.14
Matt Corallo 8 years ago
parent
commit
d2548a4f97
  1. 8
      src/net.cpp

8
src/net.cpp

@ -2321,6 +2321,10 @@ void CConnman::Interrupt() @@ -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() @@ -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();

Loading…
Cancel
Save