File tree Expand file tree Collapse file tree 1 file changed +10
-4
lines changed
Expand file tree Collapse file tree 1 file changed +10
-4
lines changed Original file line number Diff line number Diff line change @@ -491,17 +491,23 @@ int CAddrMan::Check_()
491491
492492void CAddrMan::GetAddr_ (std::vector<CAddress> &vAddr)
493493{
494- int nNodes = ADDRMAN_GETADDR_MAX_PCT* vRandom.size ()/ 100 ;
494+ unsigned int nNodes = ADDRMAN_GETADDR_MAX_PCT * vRandom.size () / 100 ;
495495 if (nNodes > ADDRMAN_GETADDR_MAX)
496496 nNodes = ADDRMAN_GETADDR_MAX;
497497
498- // perform a random shuffle over the first nNodes elements of vRandom (selecting from all)
499- for (int n = 0 ; n<nNodes ; n++)
498+ // gather a list of random nodes, skipping those of low quality
499+ for (unsigned int n = 0 ; n < vRandom. size () ; n++)
500500 {
501+ if (vAddr.size () >= nNodes)
502+ break ;
503+
501504 int nRndPos = GetRandInt (vRandom.size () - n) + n;
502505 SwapRandom (n, nRndPos);
503506 assert (mapInfo.count (vRandom[n]) == 1 );
504- vAddr.push_back (mapInfo[vRandom[n]]);
507+
508+ const CAddrInfo& ai = mapInfo[vRandom[n]];
509+ if (!ai.IsTerrible ())
510+ vAddr.push_back (ai);
505511 }
506512}
507513
You can’t perform that action at this time.
0 commit comments