@@ -349,8 +349,11 @@ void CRecoveredSigsDb::CleanupOldVotes(int64_t maxAge)
349
349
// ////////////////
350
350
351
351
CSigningManager::CSigningManager (const CActiveMasternodeManager* const mn_activeman, const CChainState& chainstate,
352
- const CQuorumManager& _qman, const std::unique_ptr<PeerManager>& peerman, bool fMemory , bool fWipe ) :
353
- db (fMemory , fWipe ), m_mn_activeman(mn_activeman), m_chainstate(chainstate), qman(_qman), m_peerman(peerman)
352
+ const CQuorumManager& _qman, bool fMemory , bool fWipe ) :
353
+ db (fMemory , fWipe ),
354
+ m_mn_activeman (mn_activeman),
355
+ m_chainstate (chainstate),
356
+ qman (_qman)
354
357
{
355
358
}
356
359
@@ -381,13 +384,14 @@ bool CSigningManager::GetRecoveredSigForGetData(const uint256& hash, CRecoveredS
381
384
return true ;
382
385
}
383
386
384
- PeerMsgRet CSigningManager::ProcessMessage (const CNode& pfrom, const std::string& msg_type, CDataStream& vRecv)
387
+ PeerMsgRet CSigningManager::ProcessMessage (const CNode& pfrom, PeerManager& peerman, const std::string& msg_type,
388
+ CDataStream& vRecv)
385
389
{
386
390
if (msg_type == NetMsgType::QSIGREC) {
387
391
auto recoveredSig = std::make_shared<CRecoveredSig>();
388
392
vRecv >> *recoveredSig;
389
393
390
- return ProcessMessageRecoveredSig (pfrom, recoveredSig);
394
+ return ProcessMessageRecoveredSig (pfrom, peerman, recoveredSig);
391
395
}
392
396
return {};
393
397
}
@@ -416,10 +420,11 @@ static bool PreVerifyRecoveredSig(const CQuorumManager& quorum_manager, const CR
416
420
return true ;
417
421
}
418
422
419
- PeerMsgRet CSigningManager::ProcessMessageRecoveredSig (const CNode& pfrom, const std::shared_ptr<const CRecoveredSig>& recoveredSig)
423
+ PeerMsgRet CSigningManager::ProcessMessageRecoveredSig (const CNode& pfrom, PeerManager& peerman,
424
+ const std::shared_ptr<const CRecoveredSig>& recoveredSig)
420
425
{
421
- WITH_LOCK (::cs_main, Assert (m_peerman)-> EraseObjectRequest (pfrom. GetId (),
422
- CInv (MSG_QUORUM_RECOVERED_SIG, recoveredSig->GetHash ())));
426
+ WITH_LOCK (::cs_main,
427
+ peerman. EraseObjectRequest (pfrom. GetId (), CInv (MSG_QUORUM_RECOVERED_SIG, recoveredSig->GetHash ())));
423
428
424
429
bool ban = false ;
425
430
if (!PreVerifyRecoveredSig (qman, *recoveredSig, ban)) {
@@ -517,22 +522,22 @@ void CSigningManager::CollectPendingRecoveredSigsToVerify(
517
522
}
518
523
}
519
524
520
- void CSigningManager::ProcessPendingReconstructedRecoveredSigs ()
525
+ void CSigningManager::ProcessPendingReconstructedRecoveredSigs (PeerManager& peerman )
521
526
{
522
527
decltype (pendingReconstructedRecoveredSigs) m;
523
528
WITH_LOCK (cs_pending, swap (m, pendingReconstructedRecoveredSigs));
524
529
525
530
for (const auto & p : m) {
526
- ProcessRecoveredSig (p.second );
531
+ ProcessRecoveredSig (p.second , peerman );
527
532
}
528
533
}
529
534
530
- bool CSigningManager::ProcessPendingRecoveredSigs ()
535
+ bool CSigningManager::ProcessPendingRecoveredSigs (PeerManager& peerman )
531
536
{
532
537
std::unordered_map<NodeId, std::list<std::shared_ptr<const CRecoveredSig>>> recSigsByNode;
533
538
std::unordered_map<std::pair<Consensus::LLMQType, uint256>, CQuorumCPtr, StaticSaltedHasher> quorums;
534
539
535
- ProcessPendingReconstructedRecoveredSigs ();
540
+ ProcessPendingReconstructedRecoveredSigs (peerman );
536
541
537
542
const size_t nMaxBatchSize{32 };
538
543
CollectPendingRecoveredSigsToVerify (nMaxBatchSize, recSigsByNode, quorums);
@@ -575,7 +580,7 @@ bool CSigningManager::ProcessPendingRecoveredSigs()
575
580
576
581
if (batchVerifier.badSources .count (nodeId)) {
577
582
LogPrint (BCLog::LLMQ, " CSigningManager::%s -- invalid recSig from other node, banning peer=%d\n " , __func__, nodeId);
578
- Assert (m_peerman)-> Misbehaving (nodeId, 100 );
583
+ peerman. Misbehaving (nodeId, 100 );
579
584
continue ;
580
585
}
581
586
@@ -584,15 +589,15 @@ bool CSigningManager::ProcessPendingRecoveredSigs()
584
589
continue ;
585
590
}
586
591
587
- ProcessRecoveredSig (recSig);
592
+ ProcessRecoveredSig (recSig, peerman );
588
593
}
589
594
}
590
595
591
596
return recSigsByNode.size () >= nMaxBatchSize;
592
597
}
593
598
594
599
// signature must be verified already
595
- void CSigningManager::ProcessRecoveredSig (const std::shared_ptr<const CRecoveredSig>& recoveredSig)
600
+ void CSigningManager::ProcessRecoveredSig (const std::shared_ptr<const CRecoveredSig>& recoveredSig, PeerManager& peerman )
596
601
{
597
602
auto llmqType = recoveredSig->getLlmqType ();
598
603
@@ -631,12 +636,12 @@ void CSigningManager::ProcessRecoveredSig(const std::shared_ptr<const CRecovered
631
636
WITH_LOCK (cs_pending, pendingReconstructedRecoveredSigs.erase (recoveredSig->GetHash ()));
632
637
633
638
if (m_mn_activeman != nullptr ) {
634
- Assert (m_peerman)-> RelayRecoveredSig (recoveredSig->GetHash ());
639
+ peerman. RelayRecoveredSig (recoveredSig->GetHash ());
635
640
}
636
641
637
642
auto listeners = WITH_LOCK (cs_listeners, return recoveredSigsListeners);
638
643
for (auto & l : listeners) {
639
- Assert (m_peerman)-> PostProcessMessage (l->HandleNewRecoveredSig (*recoveredSig));
644
+ peerman. PostProcessMessage (l->HandleNewRecoveredSig (*recoveredSig));
640
645
}
641
646
642
647
GetMainSignals ().NotifyRecoveredSig (recoveredSig);
@@ -799,14 +804,14 @@ bool CSigningManager::GetVoteForId(Consensus::LLMQType llmqType, const uint256&
799
804
return db.GetVoteForId (llmqType, id, msgHashRet);
800
805
}
801
806
802
- void CSigningManager::StartWorkerThread ()
807
+ void CSigningManager::StartWorkerThread (PeerManager& peerman )
803
808
{
804
809
// can't start new thread if we have one running already
805
810
if (workThread.joinable ()) {
806
811
assert (false );
807
812
}
808
813
809
- workThread = std::thread (&util::TraceThread, " sigshares" , [this ] { WorkThreadMain (); });
814
+ workThread = std::thread (&util::TraceThread, " sigshares" , [this , &peerman ] { WorkThreadMain (peerman ); });
810
815
}
811
816
812
817
void CSigningManager::StopWorkerThread ()
@@ -826,10 +831,10 @@ void CSigningManager::InterruptWorkerThread()
826
831
workInterrupt ();
827
832
}
828
833
829
- void CSigningManager::WorkThreadMain ()
834
+ void CSigningManager::WorkThreadMain (PeerManager& peerman )
830
835
{
831
836
while (!workInterrupt) {
832
- bool fMoreWork = ProcessPendingRecoveredSigs ();
837
+ bool fMoreWork = ProcessPendingRecoveredSigs (peerman );
833
838
834
839
Cleanup ();
835
840
0 commit comments