diff --git a/src/llmq/quorums.cpp b/src/llmq/quorums.cpp index 522e60d0a1d9..fb9cd1fa67c5 100644 --- a/src/llmq/quorums.cpp +++ b/src/llmq/quorums.cpp @@ -731,13 +731,13 @@ void CQuorumManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, C CQuorumDataRequest request; vRecv >> request; + CQuorumDataRequestKey key; + key.proRegTx = pfrom.GetVerifiedProRegTxHash(); + key.flag = true; + key.quorumHash = request.GetQuorumHash(); + key.llmqType = request.GetLLMQType(); { LOCK2(cs_main, cs_data_requests); - CQuorumDataRequestKey key; - key.proRegTx = pfrom.GetVerifiedProRegTxHash(); - key.flag = true; - key.quorumHash = request.GetQuorumHash(); - key.llmqType = request.GetLLMQType(); auto it = mapQuorumDataRequests.find(key); if (it == mapQuorumDataRequests.end()) { errorHandler("Not requested"); @@ -751,7 +751,6 @@ void CQuorumManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, C errorHandler("Not like requested"); return; } - it->second.SetProcessed(); } if (request.GetError() != CQuorumDataRequest::Errors::NONE) { @@ -816,6 +815,14 @@ void CQuorumManager::ProcessMessage(CNode& pfrom, const std::string& msg_type, C } } pQuorum->WriteContributions(m_evoDb); + { + LOCK2(cs_main, cs_data_requests); + auto it = mapQuorumDataRequests.find(key); + if (it != mapQuorumDataRequests.end()) { + it->second.SetProcessed(); + } + } + return; } }