Changeset View
Changeset View
Standalone View
Standalone View
src/net.cpp
Show First 20 Lines • Show All 1,256 Lines • ▼ Show 20 Lines | |||||
void CConnman::ThreadSocketHandler() { | void CConnman::ThreadSocketHandler() { | ||||
unsigned int nPrevNodeCount = 0; | unsigned int nPrevNodeCount = 0; | ||||
while (!interruptNet) { | while (!interruptNet) { | ||||
// | // | ||||
// Disconnect nodes | // Disconnect nodes | ||||
// | // | ||||
{ | { | ||||
LOCK(cs_vNodes); | LOCK(cs_vNodes); | ||||
if (!fNetworkActive) { | |||||
// Disconnect any connected nodes | |||||
for (CNode *pnode : vNodes) { | |||||
if (!pnode->fDisconnect) { | |||||
LogPrint(BCLog::NET, | |||||
"Network not active, dropping peer=%d\n", | |||||
pnode->GetId()); | |||||
pnode->fDisconnect = true; | |||||
} | |||||
} | |||||
} | |||||
// Disconnect unused nodes | // Disconnect unused nodes | ||||
std::vector<CNode *> vNodesCopy = vNodes; | std::vector<CNode *> vNodesCopy = vNodes; | ||||
for (CNode *pnode : vNodesCopy) { | for (CNode *pnode : vNodesCopy) { | ||||
if (pnode->fDisconnect) { | if (pnode->fDisconnect) { | ||||
// remove from vNodes | // remove from vNodes | ||||
vNodes.erase(remove(vNodes.begin(), vNodes.end(), pnode), | vNodes.erase(remove(vNodes.begin(), vNodes.end(), pnode), | ||||
vNodes.end()); | vNodes.end()); | ||||
▲ Show 20 Lines • Show All 1,105 Lines • ▼ Show 20 Lines | if (getifaddrs(&myaddrs) == 0) { | ||||
freeifaddrs(myaddrs); | freeifaddrs(myaddrs); | ||||
} | } | ||||
#endif | #endif | ||||
} | } | ||||
void CConnman::SetNetworkActive(bool active) { | void CConnman::SetNetworkActive(bool active) { | ||||
LogPrint(BCLog::NET, "SetNetworkActive: %s\n", active); | LogPrint(BCLog::NET, "SetNetworkActive: %s\n", active); | ||||
if (!active) { | if (fNetworkActive == active) { | ||||
fNetworkActive = false; | return; | ||||
LOCK(cs_vNodes); | |||||
// Close sockets to all nodes | |||||
for (CNode *pnode : vNodes) { | |||||
pnode->CloseSocketDisconnect(); | |||||
} | |||||
} else { | |||||
fNetworkActive = true; | |||||
} | } | ||||
fNetworkActive = active; | |||||
uiInterface.NotifyNetworkActiveChanged(fNetworkActive); | uiInterface.NotifyNetworkActiveChanged(fNetworkActive); | ||||
} | } | ||||
CConnman::CConnman(const Config &configIn, uint64_t nSeed0In, uint64_t nSeed1In) | CConnman::CConnman(const Config &configIn, uint64_t nSeed0In, uint64_t nSeed1In) | ||||
: config(&configIn), nSeed0(nSeed0In), nSeed1(nSeed1In) { | : config(&configIn), nSeed0(nSeed0In), nSeed1(nSeed1In) { | ||||
fNetworkActive = true; | fNetworkActive = true; | ||||
setBannedIsDirty = false; | setBannedIsDirty = false; | ||||
fAddressesInitialized = false; | fAddressesInitialized = false; | ||||
▲ Show 20 Lines • Show All 763 Lines • Show Last 20 Lines |