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

8
src/net.cpp

@ -2322,6 +2322,10 @@ void CConnman::Interrupt()
if (semOutbound) if (semOutbound)
for (int i=0; i<(nMaxOutbound + nMaxFeeler); i++) for (int i=0; i<(nMaxOutbound + nMaxFeeler); i++)
semOutbound->post(); semOutbound->post();
if (semAddnode)
for (int i=0; i<nMaxAddnode; i++)
semAddnode->post();
} }
void CConnman::Stop() void CConnman::Stop()
@ -2337,10 +2341,6 @@ void CConnman::Stop()
if (threadSocketHandler.joinable()) if (threadSocketHandler.joinable())
threadSocketHandler.join(); threadSocketHandler.join();
if (semAddnode)
for (int i=0; i<nMaxAddnode; i++)
semOutbound->post();
if (fAddressesInitialized) if (fAddressesInitialized)
{ {
DumpData(); DumpData();

Loading…
Cancel
Save