MCPcopy Create free account
hub / github.com/bitcoinxt/bitcoinxt / ThreadOpenAddedConnections

Function ThreadOpenAddedConnections

src/net.cpp:1433–1503  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1431}
1432
1433void ThreadOpenAddedConnections()
1434{
1435 {
1436 LOCK(cs_vAddedNodes);
1437 vAddedNodes = mapMultiArgs["-addnode"];
1438 }
1439
1440 if (HaveNameProxy()) {
1441 while(true) {
1442 list<string> lAddresses(0);
1443 {
1444 LOCK(cs_vAddedNodes);
1445 BOOST_FOREACH(string& strAddNode, vAddedNodes)
1446 lAddresses.push_back(strAddNode);
1447 }
1448 BOOST_FOREACH(string& strAddNode, lAddresses) {
1449 CAddress addr;
1450 CSemaphoreGrant grant(*semOutbound);
1451 OpenNetworkConnection(addr, false, &grant, strAddNode.c_str());
1452 MilliSleep(500);
1453 }
1454 MilliSleep(120000); // Retry every 2 minutes
1455 }
1456 }
1457
1458 for (unsigned int i = 0; true; i++)
1459 {
1460 list<string> lAddresses(0);
1461 {
1462 LOCK(cs_vAddedNodes);
1463 BOOST_FOREACH(string& strAddNode, vAddedNodes)
1464 lAddresses.push_back(strAddNode);
1465 }
1466
1467 list<vector<CService> > lservAddressesToAdd(0);
1468 BOOST_FOREACH(string& strAddNode, lAddresses)
1469 {
1470 vector<CService> vservNode(0);
1471 if(Lookup(strAddNode.c_str(), vservNode, Params().GetDefaultPort(), fNameLookup, 0))
1472 {
1473 lservAddressesToAdd.push_back(vservNode);
1474 {
1475 LOCK(cs_setservAddNodeAddresses);
1476 BOOST_FOREACH(CService& serv, vservNode)
1477 setservAddNodeAddresses.insert(serv);
1478 }
1479 }
1480 }
1481 // Attempt to connect to each IP for each addnode entry until at least one is successful per addnode entry
1482 // (keeping in mind that addnode entries can have many IPs if fNameLookup)
1483 {
1484 LOCK(cs_vNodes);
1485 BOOST_FOREACH(CNode* pnode, vNodes)
1486 for (list<vector<CService> >::iterator it = lservAddressesToAdd.begin(); it != lservAddressesToAdd.end(); it++)
1487 BOOST_FOREACH(CService& addrNode, *(it))
1488 if (pnode->addr == addrNode)
1489 {
1490 it = lservAddressesToAdd.erase(it);

Callers

nothing calls this directly

Calls 7

HaveNameProxyFunction · 0.85
MilliSleepFunction · 0.85
BOOST_FOREACHFunction · 0.70
push_backMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
eraseMethod · 0.45

Tested by

no test coverage detected