MCPcopy Create free account
hub / github.com/LUX-Core/lux / Check_

Method Check_

src/addrman.cpp:369–443  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

367
368#ifdef DEBUG_ADDRMAN
369int CAddrMan::Check_()
370{
371 std::set<int> setTried;
372 std::map<int, int> mapNew;
373
374 if (vRandom.size() != nTried + nNew)
375 return -7;
376
377 for (std::map<int, CAddrInfo>::iterator it = mapInfo.begin(); it != mapInfo.end(); it++) {
378 int n = (*it).first;
379 CAddrInfo& info = (*it).second;
380 if (info.fInTried) {
381 if (!info.nLastSuccess)
382 return -1;
383 if (info.nRefCount)
384 return -2;
385 setTried.insert(n);
386 } else {
387 if (info.nRefCount < 0 || info.nRefCount > ADDRMAN_NEW_BUCKETS_PER_ADDRESS)
388 return -3;
389 if (!info.nRefCount)
390 return -4;
391 mapNew[n] = info.nRefCount;
392 }
393 if (mapAddr[info] != n)
394 return -5;
395 if (info.nRandomPos < 0 || info.nRandomPos >= vRandom.size() || vRandom[info.nRandomPos] != n)
396 return -14;
397 if (info.nLastTry < 0)
398 return -6;
399 if (info.nLastSuccess < 0)
400 return -8;
401 }
402
403 if (setTried.size() != nTried)
404 return -9;
405 if (mapNew.size() != nNew)
406 return -10;
407
408 for (int n = 0; n < ADDRMAN_TRIED_BUCKET_COUNT; n++) {
409 for (int i = 0; i < ADDRMAN_BUCKET_SIZE; i++) {
410 if (vvTried[n][i] != -1) {
411 if (!setTried.count(vvTried[n][i]))
412 return -11;
413 if (mapInfo[vvTried[n][i]].GetTriedBucket(nKey) != n)
414 return -17;
415 if (mapInfo[vvTried[n][i]].GetBucketPosition(nKey, false, n) != i)
416 return -18;
417 setTried.erase(vvTried[n][i]);
418 }
419 }
420 }
421
422 for (int n = 0; n < ADDRMAN_NEW_BUCKET_COUNT; n++) {
423 for (int i = 0; i < ADDRMAN_BUCKET_SIZE; i++) {
424 if (vvNew[n][i] != -1) {
425 if (!mapNew.count(vvNew[n][i]))
426 return -12;

Callers

nothing calls this directly

Calls 9

GetTriedBucketMethod · 0.80
GetBucketPositionMethod · 0.80
sizeMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
insertMethod · 0.45
countMethod · 0.45
eraseMethod · 0.45
IsNullMethod · 0.45

Tested by

no test coverage detected