Skip to content

Commit 708fa0d

Browse files
refactor: update locking requirements for WorkThreadMain and SignPendingSigShares
Modified the WorkThreadMain function in signing.h and SignPendingSigShares in signing_shares.h to specify exclusive lock requirements. This change enhances thread safety by ensuring proper locking mechanisms are in place, preventing potential race conditions during concurrent operations.
1 parent dd56bbc commit 708fa0d

File tree

2 files changed

+3
-2
lines changed

2 files changed

+3
-2
lines changed

src/llmq/signing.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ class CSigningManager
242242
Mutex workMutex;
243243
std::condition_variable_any workCv;
244244
std::atomic<uint64_t> workEpoch{0};
245-
void WorkThreadMain(PeerManager& peerman);
245+
void WorkThreadMain(PeerManager& peerman) EXCLUSIVE_LOCKS_REQUIRED(!cs_pending, !cs_listeners);
246246

247247
public:
248248
void StartWorkerThread(PeerManager& peerman);

src/llmq/signing_shares.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,8 @@ class CSigSharesManager : public CRecoveredSigsListener
491491
void CollectSigSharesToAnnounce(const CConnman& connman,
492492
std::unordered_map<NodeId, Uint256HashMap<CSigSharesInv>>& sigSharesToAnnounce)
493493
EXCLUSIVE_LOCKS_REQUIRED(cs);
494-
void SignPendingSigShares(const CConnman& connman, PeerManager& peerman);
494+
void SignPendingSigShares(const CConnman& connman, PeerManager& peerman)
495+
EXCLUSIVE_LOCKS_REQUIRED(!cs_pendingSigns);
495496
void WorkThreadMain(CConnman& connman, PeerManager& peerman);
496497
void NotifyWorker();
497498
};

0 commit comments

Comments
 (0)