diff --git a/src/llmq/quorums_signing_shares.cpp b/src/llmq/quorums_signing_shares.cpp index 35ce5221e1c96..3917aa1e7df87 100644 --- a/src/llmq/quorums_signing_shares.cpp +++ b/src/llmq/quorums_signing_shares.cpp @@ -526,6 +526,7 @@ void CSigSharesManager::ProcessPendingSigShares(CConnman& connman) // It's ensured that no duplicates are passed to this method void CSigSharesManager::ProcessPendingSigSharesFromNode(NodeId nodeId, const std::vector& sigShares, const std::map, CQuorumCPtr>& quorums, CConnman& connman) { + LOCK(cs); auto& nodeState = nodeStates[nodeId]; cxxtimer::Timer t(true); diff --git a/src/net.cpp b/src/net.cpp index ca28e3aa0eedb..cb69adc99d481 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -2463,11 +2463,6 @@ size_t CConnman::GetMaxOutboundNodeCount() return nMaxOutbound; } -std::vector CConnman::GetvNodes() -{ - return vNodes; -}; - size_t CConnman::GetNodeCount(NumConnections flags) { LOCK(cs_vNodes); diff --git a/src/net.h b/src/net.h index 336e29e18682f..3f8d16b55fafc 100644 --- a/src/net.h +++ b/src/net.h @@ -330,7 +330,6 @@ class CConnman bool RemoveAddedNode(const std::string& node); std::vector GetAddedNodeInfo(); - std::vector GetvNodes(); size_t GetNodeCount(NumConnections num); size_t GetMaxOutboundNodeCount(); void GetNodeStats(std::vector& vstats); diff --git a/src/net_processing.cpp b/src/net_processing.cpp index e55684daf8b62..a4539fab60cbd 100644 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -2489,7 +2489,7 @@ bool PeerLogicValidation::SendMessages(CNode* pto, std::atomic& interruptM std::vector vInv; std::vector vInvWait; { - LOCK(pto->cs_inventory); + LOCK2(mempool.cs, pto->cs_inventory); vInv.reserve(std::max(pto->vInventoryBlockToSend.size() + pto->vInventoryTierTwoToSend.size(), INVENTORY_BROADCAST_MAX)); // Add blocks diff --git a/src/tiertwo/net_masternodes.cpp b/src/tiertwo/net_masternodes.cpp index 1e63fd2743634..475eb296841bc 100644 --- a/src/tiertwo/net_masternodes.cpp +++ b/src/tiertwo/net_masternodes.cpp @@ -7,7 +7,6 @@ #include "chainparams.h" #include "evo/deterministicmns.h" -#include "llmq/quorums.h" #include "netmessagemaker.h" #include "scheduler.h" #include "tiertwo/masternode_meta_manager.h" // for g_mmetaman @@ -42,27 +41,21 @@ std::set TierTwoConnMan::getQuorumNodes(Consensus::LLMQType llmqType) std::set TierTwoConnMan::getQuorumNodes(Consensus::LLMQType llmqType, uint256 quorumHash) { + LOCK(cs_vPendingMasternodes); std::set result; - auto it = WITH_LOCK(cs_vPendingMasternodes, return masternodeQuorumRelayMembers.find(std::make_pair(llmqType, quorumHash))); - if (WITH_LOCK(cs_vPendingMasternodes, return it == masternodeQuorumRelayMembers.end())) { + auto it = masternodeQuorumRelayMembers.find(std::make_pair(llmqType, quorumHash)); + if (it == masternodeQuorumRelayMembers.end()) { return {}; } - for (const auto pnode : connman->GetvNodes()) { + connman->ForEachNode([&](CNode* pnode) { if (pnode->fDisconnect) { - continue; + return; } if (!it->second.count(pnode->verifiedProRegTxHash)) { - continue; - } - // is it a valid member? - if (!llmq::quorumManager->GetQuorum(llmqType, quorumHash)) { - continue; - } - if (!llmq::quorumManager->GetQuorum(llmqType, quorumHash)->IsValidMember(pnode->verifiedProRegTxHash)) { - continue; + return; } result.emplace(pnode->GetId()); - } + }); return result; } @@ -80,12 +73,10 @@ void TierTwoConnMan::removeQuorumNodes(Consensus::LLMQType llmqType, const uint2 void TierTwoConnMan::setMasternodeQuorumRelayMembers(Consensus::LLMQType llmqType, const uint256& quorumHash, const std::set& proTxHashes) { - { - LOCK(cs_vPendingMasternodes); - auto it = masternodeQuorumRelayMembers.emplace(std::make_pair(llmqType, quorumHash), proTxHashes); - if (!it.second) { - it.first->second = proTxHashes; - } + LOCK(cs_vPendingMasternodes); + auto it = masternodeQuorumRelayMembers.emplace(std::make_pair(llmqType, quorumHash), proTxHashes); + if (!it.second) { + it.first->second = proTxHashes; } // Update existing connections diff --git a/test/lint/lint-circular-dependencies.sh b/test/lint/lint-circular-dependencies.sh index 7d984d21df94a..609848a25f4e0 100755 --- a/test/lint/lint-circular-dependencies.sh +++ b/test/lint/lint-circular-dependencies.sh @@ -44,10 +44,8 @@ EXPECTED_CIRCULAR_DEPENDENCIES=( "llmq/quorums_dkgsession -> llmq/quorums_dkgsessionmgr -> llmq/quorums_dkgsessionhandler -> llmq/quorums_dkgsession" "llmq/quorums_dkgsessionhandler -> net_processing -> llmq/quorums_dkgsessionmgr -> llmq/quorums_dkgsessionhandler" "llmq/quorums_signing -> net_processing -> llmq/quorums_signing" - "llmq/quorums -> llmq/quorums_connections -> tiertwo/net_masternodes -> llmq/quorums" "llmq/quorums_chainlocks -> net_processing -> llmq/quorums_chainlocks" "llmq/quorums_chainlocks -> validation -> llmq/quorums_chainlocks" - "activemasternode -> tiertwo/net_masternodes -> llmq/quorums -> activemasternode" "chain -> legacy/stakemodifier -> validation -> validationinterface -> chain" "chain -> legacy/stakemodifier -> stakeinput -> txdb -> chain" "chain -> legacy/stakemodifier -> validation -> checkpoints -> chain"