mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-12 15:09:59 +01:00
net: Restrict period when cs_vNodes mutex is locked
This commit is contained in:
@@ -2636,8 +2636,9 @@ void CConnman::StopNodes()
|
||||
}
|
||||
|
||||
// Close sockets
|
||||
LOCK(cs_vNodes);
|
||||
for (CNode* pnode : vNodes)
|
||||
std::vector<CNode*> nodes;
|
||||
WITH_LOCK(cs_vNodes, nodes.swap(vNodes));
|
||||
for (CNode* pnode : nodes)
|
||||
pnode->CloseSocketDisconnect();
|
||||
for (ListenSocket& hListenSocket : vhListenSocket)
|
||||
if (hListenSocket.socket != INVALID_SOCKET)
|
||||
@@ -2645,13 +2646,12 @@ void CConnman::StopNodes()
|
||||
LogPrintf("CloseSocket(hListenSocket) failed with error %s\n", NetworkErrorString(WSAGetLastError()));
|
||||
|
||||
// clean up some globals (to help leak detection)
|
||||
for (CNode* pnode : vNodes) {
|
||||
for (CNode* pnode : nodes) {
|
||||
DeleteNode(pnode);
|
||||
}
|
||||
for (CNode* pnode : vNodesDisconnected) {
|
||||
DeleteNode(pnode);
|
||||
}
|
||||
vNodes.clear();
|
||||
vNodesDisconnected.clear();
|
||||
vhListenSocket.clear();
|
||||
semOutbound.reset();
|
||||
|
||||
Reference in New Issue
Block a user