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

Function ThreadDNSAddressSeed

src/net.cpp:1313–1356  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1311}
1312
1313void ThreadDNSAddressSeed()
1314{
1315 // goal: only query DNS seeds if address need is acute
1316 if ((addrman.size() > 0) &&
1317 (!GetBoolArg("-forcednsseed", false))) {
1318 MilliSleep(11 * 1000);
1319
1320 // LOCK(cs_vNodes);
1321 // Avoid using DNS seeds if unnecessary to improve user privacy & reducing traffic to seed.
1322 int nRelevant = 0;
1323 for (auto pnode : vNodes) { nRelevant += pnode->fSuccessfullyConnected && ((pnode->nServices & nRelevantServices) == nRelevantServices); }
1324 if (nRelevant >= 2) {
1325 LogPrintf("P2P peers available. Skipped DNS seeding.\n");
1326 return;
1327 }
1328 }
1329
1330 const vector<CDNSSeedData>& vSeeds = Params().DNSSeeds();
1331 int found = 0;
1332
1333 LogPrintf("Loading addresses from DNS seeds (could take a while)\n");
1334
1335 for (const CDNSSeedData& seed : vSeeds) {
1336 if (HaveNameProxy()) {
1337 AddOneShot(seed.host);
1338 } else {
1339 vector<CNetAddr> vIPs;
1340 vector<CAddress> vAdd;
1341 ServiceFlags requiredServiceBits = nRelevantServices;
1342 if (LookupHost(GetDNSHost(seed, &requiredServiceBits).c_str(), vIPs, 0, true)) {
1343 for (CNetAddr& ip : vIPs) {
1344 int nOneDay = 24 * 3600;
1345 CAddress addr = CAddress(CService(ip, Params().GetDefaultPort()), requiredServiceBits);
1346 addr.nTime = GetTime() - 3 * nOneDay - GetRand(4 * nOneDay); // use a random age between 3 and 7 days old
1347 vAdd.push_back(addr);
1348 found++;
1349 }
1350 }
1351 addrman.Add(vAdd, CNetAddr(seed.name, true));
1352 }
1353 }
1354
1355 LogPrintf("%d addresses found from DNS seeds\n", found);
1356}
1357
1358
1359void DumpAddresses()

Callers

nothing calls this directly

Calls 15

GetBoolArgFunction · 0.85
MilliSleepFunction · 0.85
HaveNameProxyFunction · 0.85
AddOneShotFunction · 0.85
LookupHostFunction · 0.85
GetDNSHostFunction · 0.85
GetTimeFunction · 0.85
GetRandFunction · 0.85
GetDefaultPortMethod · 0.80
ParamsClass · 0.70
CAddressClass · 0.70
CServiceClass · 0.70

Tested by

no test coverage detected