aboutsummaryrefslogtreecommitdiff
path: root/src/net.cpp
diff options
context:
space:
mode:
authorGregory Maxwell <[email protected]>2012-08-22 07:15:03 -0700
committerGregory Maxwell <[email protected]>2012-08-22 07:15:03 -0700
commita159d6caf0d905790cda5191af73855725f89c12 (patch)
treee2af0e7c7b184f6162dad884d37339aa8f42c70c /src/net.cpp
parentMerge pull request #1701 from laanwj/2012_08_pull_transifex (diff)
parentFix infinite loops in connection logic (diff)
downloaddiscoin-a159d6caf0d905790cda5191af73855725f89c12.tar.xz
discoin-a159d6caf0d905790cda5191af73855725f89c12.zip
Merge pull request #1694 from sipa/fix_netloops
Fix infinite loops in connection logic
Diffstat (limited to 'src/net.cpp')
-rw-r--r--src/net.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/net.cpp b/src/net.cpp
index 1c87eb968..aaf7883e5 100644
--- a/src/net.cpp
+++ b/src/net.cpp
@@ -1391,7 +1391,7 @@ void ThreadOpenConnections2(void* parg)
printf("ThreadOpenConnections started\n");
// Connect to specific addresses
- if (mapArgs.count("-connect"))
+ if (mapArgs.count("-connect") && mapMultiArgs["-connect"].size() > 0)
{
for (int64 nLoop = 0;; nLoop++)
{
@@ -1407,6 +1407,7 @@ void ThreadOpenConnections2(void* parg)
return;
}
}
+ Sleep(500);
}
}
@@ -1480,7 +1481,12 @@ void ThreadOpenConnections2(void* parg)
if (!addr.IsValid() || setConnected.count(addr.GetGroup()) || IsLocal(addr))
break;
+ // If we didn't find an appropriate destination after trying 100 addresses fetched from addrman,
+ // stop this loop, and let the outer loop run again (which sleeps, adds seed nodes, recalculates
+ // already-connected network ranges, ...) before trying new addrman addresses.
nTries++;
+ if (nTries > 100)
+ break;
if (IsLimited(addr))
continue;