mirror of
https://github.com/dashpay/dash.git
synced 2024-12-27 04:52:59 +01:00
addrman: Do not propagate obviously poor addresses onto the network
This commit is contained in:
parent
a4f151f714
commit
3a56de7fc3
@ -492,17 +492,23 @@ int CAddrMan::Check_()
|
|||||||
|
|
||||||
void CAddrMan::GetAddr_(std::vector<CAddress> &vAddr)
|
void CAddrMan::GetAddr_(std::vector<CAddress> &vAddr)
|
||||||
{
|
{
|
||||||
int nNodes = ADDRMAN_GETADDR_MAX_PCT*vRandom.size()/100;
|
unsigned int nNodes = ADDRMAN_GETADDR_MAX_PCT * vRandom.size() / 100;
|
||||||
if (nNodes > ADDRMAN_GETADDR_MAX)
|
if (nNodes > ADDRMAN_GETADDR_MAX)
|
||||||
nNodes = ADDRMAN_GETADDR_MAX;
|
nNodes = ADDRMAN_GETADDR_MAX;
|
||||||
|
|
||||||
// perform a random shuffle over the first nNodes elements of vRandom (selecting from all)
|
// gather a list of random nodes, skipping those of low quality
|
||||||
for (int n = 0; n<nNodes; n++)
|
for (unsigned int n = 0; n < vRandom.size(); n++)
|
||||||
{
|
{
|
||||||
|
if (vAddr.size() >= nNodes)
|
||||||
|
break;
|
||||||
|
|
||||||
int nRndPos = GetRandInt(vRandom.size() - n) + n;
|
int nRndPos = GetRandInt(vRandom.size() - n) + n;
|
||||||
SwapRandom(n, nRndPos);
|
SwapRandom(n, nRndPos);
|
||||||
assert(mapInfo.count(vRandom[n]) == 1);
|
assert(mapInfo.count(vRandom[n]) == 1);
|
||||||
vAddr.push_back(mapInfo[vRandom[n]]);
|
|
||||||
|
const CAddrInfo& ai = mapInfo[vRandom[n]];
|
||||||
|
if (!ai.IsTerrible())
|
||||||
|
vAddr.push_back(ai);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user