Skip to content

Commit adf888e

Browse files
committed
refactor: inline PreVerifyRecoveredSig to CSigningManager::VerifyAndProcessRecoveredSig ex-ProcessRecoveredSig
1 parent 8d12fbb commit adf888e

File tree

3 files changed

+16
-25
lines changed

3 files changed

+16
-25
lines changed

src/llmq/net_signing.cpp

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,6 @@
1818

1919
#include <unordered_map>
2020

21-
static bool PreVerifyRecoveredSig(Consensus::LLMQType& llmqType, const llmq::CQuorumManager& quorum_manager,
22-
const llmq::CRecoveredSig& recoveredSig)
23-
{
24-
auto quorum = quorum_manager.GetQuorum(llmqType, recoveredSig.getQuorumHash());
25-
26-
if (!quorum) {
27-
LogPrint(BCLog::LLMQ, "NetSigning::%s -- quorum %s not found\n", __func__, recoveredSig.getQuorumHash().ToString());
28-
return false;
29-
}
30-
if (!llmq::IsQuorumActive(llmqType, quorum_manager, quorum->qc->quorumHash)) {
31-
return false;
32-
}
33-
34-
return true;
35-
}
36-
3721
void NetSigning::ProcessMessage(CNode& pfrom, const std::string& msg_type, CDataStream& vRecv)
3822
{
3923
if (msg_type != NetMsgType::QSIGREC) return;
@@ -44,15 +28,11 @@ void NetSigning::ProcessMessage(CNode& pfrom, const std::string& msg_type, CData
4428
WITH_LOCK(cs_main, m_peer_manager->PeerEraseObjectRequest(pfrom.GetId(),
4529
CInv{MSG_QUORUM_RECOVERED_SIG, recoveredSig->GetHash()}));
4630

47-
auto llmqType = recoveredSig->getLlmqType();
48-
if (!Params().GetLLMQ(llmqType).has_value()) {
31+
if (!Params().GetLLMQ(recoveredSig->getLlmqType()).has_value()) {
4932
m_peer_manager->PeerMisbehaving(pfrom.GetId(), 100);
5033
}
51-
if (!PreVerifyRecoveredSig(llmqType, m_sig_manager.Qman(), *recoveredSig)) {
52-
return;
53-
}
5434

55-
m_sig_manager.ProcessRecoveredSig(pfrom.GetId(), std::move(recoveredSig));
35+
m_sig_manager.VerifyAndProcessRecoveredSig(pfrom.GetId(), std::move(recoveredSig));
5636
}
5737

5838
void NetSigning::Start()

src/llmq/signing.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,8 +361,20 @@ bool CSigningManager::GetRecoveredSigForGetData(const uint256& hash, CRecoveredS
361361
return true;
362362
}
363363

364-
void CSigningManager::ProcessRecoveredSig(NodeId from, std::shared_ptr<CRecoveredSig> recoveredSig)
364+
void CSigningManager::VerifyAndProcessRecoveredSig(NodeId from, std::shared_ptr<CRecoveredSig> recoveredSig)
365365
{
366+
auto llmq_type = recoveredSig->getLlmqType();
367+
auto quorum = qman.GetQuorum(llmq_type, recoveredSig->getQuorumHash());
368+
369+
if (!quorum) {
370+
LogPrint(BCLog::LLMQ, "NetSigning::%s -- quorum %s not found\n", __func__,
371+
recoveredSig->getQuorumHash().ToString());
372+
return;
373+
}
374+
if (!IsQuorumActive(llmq_type, qman, quorum->qc->quorumHash)) {
375+
return;
376+
}
377+
366378
// It's important to only skip seen *valid* sig shares here. See comment for CBatchedSigShare
367379
// We don't receive recovered sigs in batches, but we do batched verification per node on these
368380
if (db.HasRecoveredSigForHash(recoveredSig->GetHash())) {

src/llmq/signing.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ class CSigningManager
182182
bool AlreadyHave(const CInv& inv) const EXCLUSIVE_LOCKS_REQUIRED(!cs_pending);
183183
bool GetRecoveredSigForGetData(const uint256& hash, CRecoveredSig& ret) const;
184184

185-
void ProcessRecoveredSig(NodeId from, std::shared_ptr<CRecoveredSig> recovered_sig)
185+
void VerifyAndProcessRecoveredSig(NodeId from, std::shared_ptr<CRecoveredSig> recovered_sig)
186186
EXCLUSIVE_LOCKS_REQUIRED(!cs_pending);
187187

188188
// This is called when a recovered signature was was reconstructed from another P2P message and is known to be valid
@@ -197,7 +197,6 @@ class CSigningManager
197197
void TruncateRecoveredSig(Consensus::LLMQType llmqType, const uint256& id);
198198

199199
// Used by NetSigning:
200-
const CQuorumManager& Qman() { return qman; }
201200
[[nodiscard]] Uint256HashMap<std::shared_ptr<const CRecoveredSig>> FetchPendingReconstructed()
202201
EXCLUSIVE_LOCKS_REQUIRED(!cs_pending);
203202
[[nodiscard]] bool CollectPendingRecoveredSigsToVerify(

0 commit comments

Comments
 (0)