Skip to content

Commit e98ba12

Browse files
refactor: streamline signature recovery process in CSigSharesManager
Removed the ProcessRecoveredSigUnlocked method and directly integrated its functionality into TryRecoverSig. This change simplifies the handling of recovered signatures for single-member quorums, ensuring proper lock management and enhancing code clarity.
1 parent 0a08b2a commit e98ba12

File tree

2 files changed

+2
-12
lines changed

2 files changed

+2
-12
lines changed

src/llmq/signing_shares.cpp

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -805,8 +805,6 @@ void CSigSharesManager::TryRecoverSig(const CQuorum& quorum, const uint256& id,
805805

806806
singleMemberRecoveredSig = std::make_shared<CRecoveredSig>(quorum.params.type, quorum.qc->quorumHash, id, msgHash,
807807
recoveredSig);
808-
// Release lock before calling ProcessRecoveredSig to avoid double lock in HandleNewRecoveredSig
809-
// ProcessRecoveredSig will synchronously call HandleNewRecoveredSig which requires the lock
810808
}
811809

812810
sigSharesForRecovery.reserve((size_t) quorum.params.threshold);
@@ -825,7 +823,7 @@ void CSigSharesManager::TryRecoverSig(const CQuorum& quorum, const uint256& id,
825823

826824
// Handle single-member quorum case after releasing the lock
827825
if (singleMemberRecoveredSig) {
828-
ProcessRecoveredSigUnlocked(singleMemberRecoveredSig);
826+
sigman.ProcessRecoveredSig(singleMemberRecoveredSig, m_peerman);
829827
return; // end of single-quorum processing
830828
}
831829

@@ -857,12 +855,7 @@ void CSigSharesManager::TryRecoverSig(const CQuorum& quorum, const uint256& id,
857855
}
858856
}
859857

860-
ProcessRecoveredSigUnlocked(rs);
861-
}
862-
863-
void CSigSharesManager::ProcessRecoveredSigUnlocked(const std::shared_ptr<const CRecoveredSig>& recoveredSig)
864-
{
865-
sigman.ProcessRecoveredSig(recoveredSig, m_peerman);
858+
sigman.ProcessRecoveredSig(rs, m_peerman);
866859
}
867860

868861
CDeterministicMNCPtr CSigSharesManager::SelectMemberForRecovery(const CQuorum& quorum, const uint256 &id, int attempt)

src/llmq/signing_shares.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -477,9 +477,6 @@ class CSigSharesManager : public CRecoveredSigsListener
477477
void ProcessSigShare(const CSigShare& sigShare, const CQuorumCPtr& quorum) EXCLUSIVE_LOCKS_REQUIRED(!cs);
478478
void TryRecoverSig(const CQuorum& quorum, const uint256& id, const uint256& msgHash) EXCLUSIVE_LOCKS_REQUIRED(!cs);
479479

480-
private:
481-
void ProcessRecoveredSigUnlocked(const std::shared_ptr<const CRecoveredSig>& recoveredSig) LOCKS_EXCLUDED(cs);
482-
483480
bool GetSessionInfoByRecvId(NodeId nodeId, uint32_t sessionId, CSigSharesNodeState::SessionInfo& retInfo)
484481
EXCLUSIVE_LOCKS_REQUIRED(!cs);
485482
static CSigShare RebuildSigShare(const CSigSharesNodeState::SessionInfo& session, const std::pair<uint16_t, CBLSLazySignature>& in);

0 commit comments

Comments
 (0)