From: Pieter Wuille Date: Thu, 16 Feb 2012 11:34:11 +0000 (-0800) Subject: Merge pull request #844 from sipa/shutdownfix X-Git-Tag: v0.4.0-unstable~129^2~215 X-Git-Url: https://git.novaco.in/?a=commitdiff_plain;h=999b4cacaf53189dc9e8d5c6373c1f3da5b8ae4c;hp=-c;p=novacoin.git Merge pull request #844 from sipa/shutdownfix Several shutdown-related fixes --- 999b4cacaf53189dc9e8d5c6373c1f3da5b8ae4c diff --combined src/net.cpp index a66b1a6,92afdb0..3a1777f --- a/src/net.cpp +++ b/src/net.cpp @@@ -740,17 -740,13 +740,17 @@@ void ThreadSocketHandler2(void* parg struct sockaddr_in sockaddr; socklen_t len = sizeof(sockaddr); SOCKET hSocket = accept(hListenSocket, (struct sockaddr*)&sockaddr, &len); - CAddress addr(sockaddr); + CAddress addr; int nInbound = 0; + if (hSocket != INVALID_SOCKET) + addr = CAddress(sockaddr); + CRITICAL_BLOCK(cs_vNodes) BOOST_FOREACH(CNode* pnode, vNodes) if (pnode->fInbound) nInbound++; + if (hSocket == INVALID_SOCKET) { if (WSAGetLastError() != WSAEWOULDBLOCK) @@@ -1278,9 -1274,13 +1278,13 @@@ void ThreadOpenConnections2(void* parg int64 nStart = GetTime(); loop { - // Limit outbound connections vnThreadsRunning[1]--; Sleep(500); + vnThreadsRunning[1]++; + if (fShutdown) + return; + + // Limit outbound connections loop { int nOutbound = 0; @@@ -1292,13 -1292,12 +1296,12 @@@ nMaxOutboundConnections = min(nMaxOutboundConnections, (int)GetArg("-maxconnections", 125)); if (nOutbound < nMaxOutboundConnections) break; + vnThreadsRunning[1]--; Sleep(2000); + vnThreadsRunning[1]++; if (fShutdown) return; } - vnThreadsRunning[1]++; - if (fShutdown) - return; bool fAddSeeds = false; @@@ -1770,7 -1769,7 +1773,7 @@@ bool StopNode( fShutdown = true; nTransactionsUpdated++; int64 nStart = GetTime(); - while (vnThreadsRunning[0] > 0 || vnThreadsRunning[2] > 0 || vnThreadsRunning[3] > 0 || vnThreadsRunning[4] > 0 + while (vnThreadsRunning[0] > 0 || vnThreadsRunning[1] > 0 || vnThreadsRunning[2] > 0 || vnThreadsRunning[3] > 0 || vnThreadsRunning[4] > 0 || (fHaveUPnP && vnThreadsRunning[5] > 0) || vnThreadsRunning[6] > 0 || vnThreadsRunning[7] > 0 ) {