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.
This commit is contained in:
Matt Corallo 2017-03-08 14:41:57 -05:00
parent 6996e066b5
commit e007b243c4

View file

@ -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();