diff options
-rw-r--r-- | src/net.cpp | 27 | ||||
-rw-r--r-- | src/net.h | 2 |
2 files changed, 18 insertions, 11 deletions
diff --git a/src/net.cpp b/src/net.cpp index c51a1b4a74..767275247d 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1153,9 +1153,22 @@ void CConnman::AcceptConnection(const ListenSocket& hListenSocket) { } } +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) { // @@ -1219,16 +1232,7 @@ void CConnman::ThreadSocketHandler() } } } - size_t vNodesSize; - { - LOCK(cs_vNodes); - vNodesSize = vNodes.size(); - } - if(vNodesSize != nPrevNodeCount) { - nPrevNodeCount = vNodesSize; - if(clientInterface) - clientInterface->NotifyNumConnectionsChanged(vNodesSize); - } + NotifyNumConnectionsChanged(); // // Find which sockets have data to receive @@ -2217,6 +2221,7 @@ CConnman::CConnman(uint64_t nSeed0In, uint64_t nSeed1In) : nSeed0(nSeed0In), nSe setBannedIsDirty = false; fAddressesInitialized = false; nLastNodeId = 0; + nPrevNodeCount = 0; nSendBufferMaxSize = 0; nReceiveFloodSize = 0; flagInterruptMsgProc = false; @@ -336,6 +336,7 @@ private: void ThreadOpenConnections(std::vector<std::string> connect); void ThreadMessageHandler(); void AcceptConnection(const ListenSocket& hListenSocket); + void NotifyNumConnectionsChanged(); void ThreadSocketHandler(); void ThreadDNSAddressSeed(); @@ -406,6 +407,7 @@ private: std::list<CNode*> vNodesDisconnected; mutable CCriticalSection cs_vNodes; std::atomic<NodeId> nLastNodeId; + unsigned int nPrevNodeCount; /** Services this instance offers */ ServiceFlags nLocalServices; |