|
|
|
@ -431,9 +431,9 @@ CAddrInfo CAddrMan::Select_(bool newOnly) const
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#ifdef DEBUG_ADDRMAN
|
|
|
|
|
int CAddrMan::Check_()
|
|
|
|
|
int CAddrMan::Check_() const
|
|
|
|
|
{
|
|
|
|
|
#ifdef DEBUG_ADDRMAN
|
|
|
|
|
AssertLockHeld(cs);
|
|
|
|
|
|
|
|
|
|
std::unordered_set<int> setTried;
|
|
|
|
@ -458,8 +458,10 @@ int CAddrMan::Check_()
|
|
|
|
|
return -4;
|
|
|
|
|
mapNew[n] = info.nRefCount;
|
|
|
|
|
}
|
|
|
|
|
if (mapAddr[info] != n)
|
|
|
|
|
const auto it{mapAddr.find(info)};
|
|
|
|
|
if (it == mapAddr.end() || it->second != n) {
|
|
|
|
|
return -5;
|
|
|
|
|
}
|
|
|
|
|
if (info.nRandomPos < 0 || (size_t)info.nRandomPos >= vRandom.size() || vRandom[info.nRandomPos] != n)
|
|
|
|
|
return -14;
|
|
|
|
|
if (info.nLastTry < 0)
|
|
|
|
@ -478,10 +480,13 @@ int CAddrMan::Check_()
|
|
|
|
|
if (vvTried[n][i] != -1) {
|
|
|
|
|
if (!setTried.count(vvTried[n][i]))
|
|
|
|
|
return -11;
|
|
|
|
|
if (mapInfo[vvTried[n][i]].GetTriedBucket(nKey, m_asmap) != n)
|
|
|
|
|
const auto it{mapInfo.find(vvTried[n][i])};
|
|
|
|
|
if (it == mapInfo.end() || it->second.GetTriedBucket(nKey, m_asmap) != n) {
|
|
|
|
|
return -17;
|
|
|
|
|
if (mapInfo[vvTried[n][i]].GetBucketPosition(nKey, false, n) != i)
|
|
|
|
|
}
|
|
|
|
|
if (it->second.GetBucketPosition(nKey, false, n) != i) {
|
|
|
|
|
return -18;
|
|
|
|
|
}
|
|
|
|
|
setTried.erase(vvTried[n][i]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -492,8 +497,10 @@ int CAddrMan::Check_()
|
|
|
|
|
if (vvNew[n][i] != -1) {
|
|
|
|
|
if (!mapNew.count(vvNew[n][i]))
|
|
|
|
|
return -12;
|
|
|
|
|
if (mapInfo[vvNew[n][i]].GetBucketPosition(nKey, true, n) != i)
|
|
|
|
|
const auto it{mapInfo.find(vvNew[n][i])};
|
|
|
|
|
if (it == mapInfo.end() || it->second.GetBucketPosition(nKey, true, n) != i) {
|
|
|
|
|
return -19;
|
|
|
|
|
}
|
|
|
|
|
if (--mapNew[vvNew[n][i]] == 0)
|
|
|
|
|
mapNew.erase(vvNew[n][i]);
|
|
|
|
|
}
|
|
|
|
@ -507,9 +514,9 @@ int CAddrMan::Check_()
|
|
|
|
|
if (nKey.IsNull())
|
|
|
|
|
return -16;
|
|
|
|
|
|
|
|
|
|
#endif // DEBUG_ADDRMAN
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
void CAddrMan::GetAddr_(std::vector<CAddress>& vAddr, size_t max_addresses, size_t max_pct, std::optional<Network> network) const
|
|
|
|
|
{
|
|
|
|
|