aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPieter Wuille <pieter.wuille@gmail.com>2012-02-15 21:17:15 +0100
committerLuke Dashjr <luke-jr+git@utopios.org>2012-02-17 09:02:21 -0500
commitd52397b3c02330d17cde6952e8bbc1c492c06007 (patch)
treee3fe3c559320955663833ee9ffa5e7514ef9e2ed
parent622f1438dec6f2fc5565597ac1f88c3873549f33 (diff)
downloadbitcoin-d52397b3c02330d17cde6952e8bbc1c492c06007.tar.xz
Several shutdown-related fixes
* do not let vnThreadsRunning[1] go negative * do not perform locking operations while vnThreadsRunning[1] is decreased * check vnThreadsRunning[1] at exit
-rw-r--r--src/net.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/net.cpp b/src/net.cpp
index 423b754390..a8d3d0b171 100644
--- a/src/net.cpp
+++ b/src/net.cpp
@@ -1431,9 +1431,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;
@@ -1445,13 +1449,12 @@ void ThreadOpenConnections2(void* parg)
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;
@@ -1845,7 +1848,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
#ifdef USE_UPNP
|| vnThreadsRunning[5] > 0
#endif