when updating peers from erasePeer() lock the map before mutating;

pull/121/merge
Bryan Biedenkapp 4 weeks ago
parent 55bef73a5b
commit 895f5c8df7

@ -2258,11 +2258,13 @@ void TrafficNetwork::erasePeer(uint32_t peerId)
{ {
bool neighborFNE = false; bool neighborFNE = false;
{ {
m_peers.lock();
auto it = std::find_if(m_peers.begin(), m_peers.end(), [&](PeerMapPair x) { return x.first == peerId; }); auto it = std::find_if(m_peers.begin(), m_peers.end(), [&](PeerMapPair x) { return x.first == peerId; });
if (it != m_peers.end()) { if (it != m_peers.end()) {
neighborFNE = it->second->peerClass() == PEER_CONN_CLASS_NEIGHBOR; neighborFNE = it->second->peerClass() == PEER_CONN_CLASS_NEIGHBOR;
m_peers.erase(peerId); m_peers.erase(peerId);
} }
m_peers.unlock();
} }
// erase any CC maps for this peer // erase any CC maps for this peer

Loading…
Cancel
Save

Powered by TurnKey Linux.