|
|
|
@ -8,8 +8,6 @@
|
|
|
|
|
#include "serialize.h"
|
|
|
|
|
#include "streams.h"
|
|
|
|
|
|
|
|
|
|
using namespace std;
|
|
|
|
|
|
|
|
|
|
int CAddrInfo::GetTriedBucket(const uint256& nKey) const
|
|
|
|
|
{
|
|
|
|
|
uint64_t hash1 = (CHashWriter(SER_GETHASH, 0) << nKey << GetKey()).GetHash().GetCheapHash();
|
|
|
|
@ -68,7 +66,7 @@ double CAddrInfo::GetChance(int64_t nNow) const
|
|
|
|
|
fChance *= 0.01;
|
|
|
|
|
|
|
|
|
|
// 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));
|
|
|
|
|
fChance *= pow(0.66, std::min(nAttempts, 8));
|
|
|
|
|
|
|
|
|
|
return fChance;
|
|
|
|
|
}
|
|
|
|
@ -258,7 +256,7 @@ bool CAddrMan::Add_(const CAddress& addr, const CNetAddr& source, int64_t nTimeP
|
|
|
|
|
bool fCurrentlyOnline = (GetAdjustedTime() - addr.nTime < 24 * 60 * 60);
|
|
|
|
|
int64_t nUpdateInterval = (fCurrentlyOnline ? 60 * 60 : 24 * 60 * 60);
|
|
|
|
|
if (addr.nTime && (!pinfo->nTime || pinfo->nTime < addr.nTime - nUpdateInterval - nTimePenalty))
|
|
|
|
|
pinfo->nTime = max((int64_t)0, addr.nTime - nTimePenalty);
|
|
|
|
|
pinfo->nTime = std::max((int64_t)0, addr.nTime - nTimePenalty);
|
|
|
|
|
|
|
|
|
|
// add services
|
|
|
|
|
pinfo->nServices |= addr.nServices;
|
|
|
|
@ -283,7 +281,7 @@ bool CAddrMan::Add_(const CAddress& addr, const CNetAddr& source, int64_t nTimeP
|
|
|
|
|
return false;
|
|
|
|
|
} else {
|
|
|
|
|
pinfo = Create(addr, source, &nId);
|
|
|
|
|
pinfo->nTime = max((int64_t)0, (int64_t)pinfo->nTime - nTimePenalty);
|
|
|
|
|
pinfo->nTime = std::max((int64_t)0, (int64_t)pinfo->nTime - nTimePenalty);
|
|
|
|
|
nNew++;
|
|
|
|
|
fNew = true;
|
|
|
|
|
}
|
|
|
|
|