diff --git a/src/net.h b/src/net.h --- a/src/net.h +++ b/src/net.h @@ -343,6 +343,7 @@ void ThreadOpenConnections(std::vector connect); void ThreadMessageHandler(); void AcceptConnection(const ListenSocket &hListenSocket); + void NotifyNumConnectionsChanged(); void ThreadSocketHandler(); void ThreadDNSAddressSeed(); @@ -416,6 +417,7 @@ std::list vNodesDisconnected; mutable CCriticalSection cs_vNodes; std::atomic nLastNodeId; + unsigned int nPrevNodeCount; /** Services this instance offers */ ServiceFlags nLocalServices; diff --git a/src/net.cpp b/src/net.cpp --- a/src/net.cpp +++ b/src/net.cpp @@ -1230,8 +1230,21 @@ } } +void CConnman::NotifyNumConnectionsChanged() { + size_t vNodesSize; + { + LOCK(cs_vNodes); + vNodesSize = vNodes.size(); + } + if (vNodesSize != nPrevNodeCount) { + nPrevNodeCount = vNodesSize; + if (clientInterface) { + clientInterface->NotifyNumConnectionsChanged(vNodesSize); + } + } +} + void CConnman::ThreadSocketHandler() { - unsigned int nPrevNodeCount = 0; while (!interruptNet) { // // Disconnect nodes @@ -1294,17 +1307,7 @@ } } } - size_t vNodesSize; - { - LOCK(cs_vNodes); - vNodesSize = vNodes.size(); - } - if (vNodesSize != nPrevNodeCount) { - nPrevNodeCount = vNodesSize; - if (clientInterface) { - clientInterface->NotifyNumConnectionsChanged(nPrevNodeCount); - } - } + NotifyNumConnectionsChanged(); // // Find which sockets have data to receive @@ -2347,6 +2350,7 @@ setBannedIsDirty = false; fAddressesInitialized = false; nLastNodeId = 0; + nPrevNodeCount = 0; nSendBufferMaxSize = 0; nReceiveFloodSize = 0; flagInterruptMsgProc = false;