aboutsummaryrefslogtreecommitdiff
path: root/src/addrman.cpp
diff options
context:
space:
mode:
authorPieter Wuille <pieter.wuille@gmail.com>2015-03-19 09:51:59 -0700
committerWladimir J. van der Laan <laanwj@gmail.com>2015-04-01 16:39:36 +0200
commit0c6f334c32f2ef5b7224ec7f5ac694153a7f4241 (patch)
treebf655d2f73990a02b83226e6672db44f0a8bbd63 /src/addrman.cpp
parent214154e6fc65bdc06fbfe1bc04b9b57347fdb3f7 (diff)
downloadbitcoin-0c6f334c32f2ef5b7224ec7f5ac694153a7f4241.tar.xz
Always use a 50% chance to choose between tried and new entries
This change was suggested as Countermeasure 2 in Eclipse Attacks on Bitcoin’s Peer-to-Peer Network, Ethan Heilman, Alison Kendler, Aviv Zohar, Sharon Goldberg. ePrint Archive Report 2015/263. March 2015. Rebased-From: c6a63ceeb4956933588995bcf01dc3095aaeb1fc Github-Pull: #5941
Diffstat (limited to 'src/addrman.cpp')
-rw-r--r--src/addrman.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/addrman.cpp b/src/addrman.cpp
index df32da7257..015589343d 100644
--- a/src/addrman.cpp
+++ b/src/addrman.cpp
@@ -332,14 +332,13 @@ void CAddrMan::Attempt_(const CService& addr, int64_t nTime)
info.nAttempts++;
}
-CAddress CAddrMan::Select_(int nUnkBias)
+CAddress CAddrMan::Select_()
{
if (size() == 0)
return CAddress();
- double nCorTried = sqrt(nTried) * (100.0 - nUnkBias);
- double nCorNew = sqrt(nNew) * nUnkBias;
- if ((nCorTried + nCorNew) * GetRandInt(1 << 30) / (1 << 30) < nCorTried) {
+ // Use a 50% chance for choosing between tried and new table entries.
+ if (nTried > 0 && (nNew == 0 || GetRandInt(2) == 0)) {
// use a tried node
double fChanceFactor = 1.0;
while (1) {