aboutsummaryrefslogtreecommitdiff
path: root/src/addrman.cpp
diff options
context:
space:
mode:
authorGregory Maxwell <greg@xiph.org>2015-04-19 11:47:56 -0700
committerGregory Maxwell <greg@xiph.org>2015-04-19 11:47:56 -0700
commita784f90c9892f06b9fea4e7579f5eca3585482c3 (patch)
tree7af900f4ac6a234617cd7a20322b29eef795e015 /src/addrman.cpp
parent8f955b9661224adc950e302b42d2f7bcb5e90bef (diff)
downloadbitcoin-a784f90c9892f06b9fea4e7579f5eca3585482c3.tar.xz
Cap nAttempts penalty at 8 and switch to pow instead of a division loop.
On hosts that had spent some time with a failed internet connection their nAttempts penalty was going through the roof (e.g. thousands for all peers) and as a result the connect search was pegging the CPU and failing to get more than a 4 connections after days of running (because it was taking so long per try).
Diffstat (limited to 'src/addrman.cpp')
-rw-r--r--src/addrman.cpp5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/addrman.cpp b/src/addrman.cpp
index 5d9527f0e1..094c913e9c 100644
--- a/src/addrman.cpp
+++ b/src/addrman.cpp
@@ -67,9 +67,8 @@ double CAddrInfo::GetChance(int64_t nNow) const
if (nSinceLastTry < 60 * 10)
fChance *= 0.01;
- // deprioritize 50% after each failed attempt
- for (int n = 0; n < nAttempts; n++)
- fChance /= 1.5;
+ // deprioritize 66% after each failed attempt, but at most 1/28th to avoid the search taking forever or overly penalizing outages.
+ fChance *= pow(0.66, min(nAttempts, 8));
return fChance;
}