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

Function ThreadOpenAddedConnections

src/net.cpp:1049–1114  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1047}
1048
1049void ThreadOpenAddedConnections() {
1050 {
1051 LOCK(cs_vAddedNodes);
1052 vAddedNodes = SysCfg().GetMultiArgs("-addnode");
1053 }
1054
1055 if (HaveNameProxy()) {
1056 while (true) {
1057 list<string> lAddresses(0);
1058 {
1059 LOCK(cs_vAddedNodes);
1060 for (auto& strAddNode : vAddedNodes)
1061 lAddresses.push_back(strAddNode);
1062 }
1063 for (auto& strAddNode : lAddresses) {
1064 CAddress addr;
1065 CSemaphoreGrant grant(*semOutbound);
1066 OpenNetworkConnection(addr, &grant, strAddNode.c_str());
1067 MilliSleep(500);
1068 }
1069 MilliSleep(120000); // Retry every 2 minutes
1070 }
1071 }
1072
1073 for (uint32_t i = 0; true; i++) {
1074 list<string> lAddresses(0);
1075 {
1076 LOCK(cs_vAddedNodes);
1077 for (auto& strAddNode : vAddedNodes)
1078 lAddresses.push_back(strAddNode);
1079 }
1080
1081 list<vector<CService> > lservAddressesToAdd(0);
1082 for (auto& strAddNode : lAddresses) {
1083 vector<CService> vservNode(0);
1084 if (Lookup(strAddNode.c_str(), vservNode, SysCfg().GetDefaultPort(), fNameLookup, 0)) {
1085 lservAddressesToAdd.push_back(vservNode);
1086 {
1087 LOCK(cs_setservAddNodeAddresses);
1088 for (auto& serv : vservNode)
1089 setservAddNodeAddresses.insert(serv);
1090 }
1091 }
1092 }
1093 // Attempt to connect to each IP for each addnode entry until at least one is successful per addnode entry
1094 // (keeping in mind that addnode entries can have many IPs if fNameLookup)
1095 {
1096 LOCK(cs_vNodes);
1097 for (auto pNode : vNodes)
1098 for (list<vector<CService> >::iterator it = lservAddressesToAdd.begin();
1099 it != lservAddressesToAdd.end(); it++)
1100 for (auto& addrNode : *(it))
1101 if (pNode->addr == addrNode) {
1102 it = lservAddressesToAdd.erase(it);
1103 it--;
1104 break;
1105 }
1106 }

Callers

nothing calls this directly

Calls 12

HaveNameProxyFunction · 0.85
OpenNetworkConnectionFunction · 0.85
MilliSleepFunction · 0.85
LookupFunction · 0.85
push_backMethod · 0.80
CAddressClass · 0.50
GetDefaultPortMethod · 0.45
insertMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
eraseMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected