Skip to content

Commit 2b1c165

Browse files
Merge dashpay#5977: refactor: move CConnman::RelayInv{Filtered} to PeerManager, remove CConnman::RelayTransaction
f2fe39f trivial: add `Asserts` for `m_peerman` pointer container uses (Kittywhiskers Van Gogh) 35be4e2 llmq: pass PeerManager to llmq::CInstantSendManager constructor (Kittywhiskers Van Gogh) bfd33cd net: move CConnman::RelayInv{Filtered} into PeerManager (Kittywhiskers Van Gogh) 313a7e9 trivial: cleanup unnecessary headers in context files (Kittywhiskers Van Gogh) c3f1ac2 net: retire CConnman::RelayTransaction, use PeerManager::RelayTransaction (Kittywhiskers Van Gogh) 0323c6c net: move Relay{Inv, InvFiltered, Transaction} out of CConnman (Kittywhiskers Van Gogh) d54ba44 net: use ForEachNode instead of manually iterating through vNodes (Kittywhiskers Van Gogh) Pull request description: ## Additional information * Dependency for dashpay#5982 * Unfortunately, we are stuck with using the `unique_ptr` const-ref of `PeerManager` for initializing {`CJ`, `LLMQ`}`Context` due to some unit tests depending on Dash-specific entities but based on a testing setup that doesn't initialize `PeerManager` (specifically `validation_chainstatemanager_tests`, which uses `ChainTestingSetup`, as opposed to `TestingSetup`, which initializes `PeerManager`). Attempting to dereference it earlier will result in crashing (see CI pipeline [here](https://gitlab.com/dashpay/dash/-/pipelines/1245924304)) ## Breaking Changes None observed. ## Checklist: - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas - [x] I have added or updated relevant unit/integration/functional/e2e tests - [x] I have made corresponding changes to the documentation **(note: N/A)** - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_ ACKs for top commit: PastaPastaPasta: re-utACK [f2fe39f](dashpay@f2fe39f) knst: utACK [f2fe39f](dashpay@f2fe39f) Tree-SHA512: 5e9ca47ba9f7f0c5fdc93bf6cfd99d91be6d134610d2bd3dccde17443a956c7d8848b3406082ee8b6ee3fd25f586ce7bac45bc89b568424479b8fc149172ae51
2 parents 2610df3 + f2fe39f commit 2b1c165

33 files changed

+218
-203
lines changed

src/coinjoin/context.cpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,20 @@
44

55
#include <coinjoin/context.h>
66

7-
#include <net.h>
8-
#include <txmempool.h>
9-
#include <validation.h>
10-
117
#ifdef ENABLE_WALLET
128
#include <coinjoin/client.h>
139
#endif // ENABLE_WALLET
1410
#include <coinjoin/server.h>
1511

1612
CJContext::CJContext(CChainState& chainstate, CConnman& connman, CDeterministicMNManager& dmnman, CMasternodeMetaMan& mn_metaman,
1713
CTxMemPool& mempool, const CActiveMasternodeManager* const mn_activeman, const CMasternodeSync& mn_sync,
18-
bool relay_txes) :
14+
const std::unique_ptr<PeerManager>& peerman, bool relay_txes) :
1915
dstxman{std::make_unique<CDSTXManager>()},
2016
#ifdef ENABLE_WALLET
2117
walletman{std::make_unique<CoinJoinWalletManager>(connman, dmnman, mn_metaman, mempool, mn_sync, queueman)},
2218
queueman {relay_txes ? std::make_unique<CCoinJoinClientQueueManager>(connman, *walletman, dmnman, mn_metaman, mn_sync) : nullptr},
2319
#endif // ENABLE_WALLET
24-
server{std::make_unique<CCoinJoinServer>(chainstate, connman, dmnman, *dstxman, mn_metaman, mempool, mn_activeman, mn_sync)}
20+
server{std::make_unique<CCoinJoinServer>(chainstate, connman, dmnman, *dstxman, mn_metaman, mempool, mn_activeman, mn_sync, peerman)}
2521
{}
2622

2723
CJContext::~CJContext() {}

src/coinjoin/context.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class CDSTXManager;
2121
class CMasternodeMetaMan;
2222
class CMasternodeSync;
2323
class CTxMemPool;
24+
class PeerManager;
2425

2526
#ifdef ENABLE_WALLET
2627
class CCoinJoinClientQueueManager;
@@ -32,7 +33,7 @@ struct CJContext {
3233
CJContext(const CJContext&) = delete;
3334
CJContext(CChainState& chainstate, CConnman& connman, CDeterministicMNManager& dmnman, CMasternodeMetaMan& mn_metaman,
3435
CTxMemPool& mempool, const CActiveMasternodeManager* const mn_activeman, const CMasternodeSync& mn_sync,
35-
bool relay_txes);
36+
const std::unique_ptr<PeerManager>& peerman, bool relay_txes);
3637
~CJContext();
3738

3839
const std::unique_ptr<CDSTXManager> dstxman;

src/coinjoin/server.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include <masternode/sync.h>
1313
#include <net.h>
1414
#include <netmessagemaker.h>
15+
#include <net_processing.h>
1516
#include <script/interpreter.h>
1617
#include <shutdown.h>
1718
#include <streams.h>
@@ -348,7 +349,7 @@ void CCoinJoinServer::CommitFinalTransaction()
348349
LogPrint(BCLog::COINJOIN, "CCoinJoinServer::CommitFinalTransaction -- TRANSMITTING DSTX\n");
349350

350351
CInv inv(MSG_DSTX, hashTx);
351-
connman.RelayInv(inv);
352+
Assert(m_peerman)->RelayInv(inv);
352353

353354
// Tell the clients it was successful
354355
RelayCompletedTransaction(MSG_SUCCESS);
@@ -459,7 +460,7 @@ void CCoinJoinServer::ConsumeCollateral(const CTransactionRef& txref) const
459460
if (!ATMPIfSaneFee(m_chainstate, mempool, txref, false /* bypass_limits */)) {
460461
LogPrint(BCLog::COINJOIN, "%s -- AcceptToMemoryPool failed\n", __func__);
461462
} else {
462-
connman.RelayTransaction(*txref, static_cast<bool>(m_dstxman.GetDSTX(txref->GetHash())));
463+
Assert(m_peerman)->RelayTransaction(txref->GetHash());
463464
LogPrint(BCLog::COINJOIN, "%s -- Collateral was consumed\n", __func__);
464465
}
465466
}

src/coinjoin/server.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class CDSTXManager;
1818
class CMasternodeMetaMan;
1919
class CNode;
2020
class CTxMemPool;
21+
class PeerManager;
2122

2223
class UniValue;
2324

@@ -34,6 +35,7 @@ class CCoinJoinServer : public CCoinJoinBaseSession, public CCoinJoinBaseManager
3435
CTxMemPool& mempool;
3536
const CActiveMasternodeManager* const m_mn_activeman;
3637
const CMasternodeSync& m_mn_sync;
38+
const std::unique_ptr<PeerManager>& m_peerman;
3739

3840
// Mixing uses collateral transactions to trust parties entering the pool
3941
// to behave honestly. If they don't it takes their money.
@@ -90,7 +92,7 @@ class CCoinJoinServer : public CCoinJoinBaseSession, public CCoinJoinBaseManager
9092
public:
9193
explicit CCoinJoinServer(CChainState& chainstate, CConnman& _connman, CDeterministicMNManager& dmnman, CDSTXManager& dstxman,
9294
CMasternodeMetaMan& mn_metaman, CTxMemPool& mempool, const CActiveMasternodeManager* const mn_activeman,
93-
const CMasternodeSync& mn_sync) :
95+
const CMasternodeSync& mn_sync, const std::unique_ptr<PeerManager>& peerman) :
9496
m_chainstate(chainstate),
9597
connman(_connman),
9698
m_dmnman(dmnman),
@@ -99,6 +101,7 @@ class CCoinJoinServer : public CCoinJoinBaseSession, public CCoinJoinBaseManager
99101
mempool(mempool),
100102
m_mn_activeman(mn_activeman),
101103
m_mn_sync(mn_sync),
104+
m_peerman(peerman),
102105
vecSessionCollaterals(),
103106
fUnitTest(false)
104107
{}

src/dsnotificationinterface.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include <dsnotificationinterface.h>
1212
#include <governance/governance.h>
1313
#include <masternode/sync.h>
14+
#include <net_processing.h>
1415
#include <validation.h>
1516

1617
#include <evo/deterministicmns.h>
@@ -26,13 +27,15 @@
2627
CDSNotificationInterface::CDSNotificationInterface(CConnman& connman,
2728
CMasternodeSync& mn_sync,
2829
CGovernanceManager& govman,
30+
PeerManager& peerman,
2931
const CActiveMasternodeManager* const mn_activeman,
3032
const std::unique_ptr<CDeterministicMNManager>& dmnman,
3133
const std::unique_ptr<LLMQContext>& llmq_ctx,
3234
const std::unique_ptr<CJContext>& cj_ctx)
3335
: m_connman(connman),
3436
m_mn_sync(mn_sync),
3537
m_govman(govman),
38+
m_peerman(peerman),
3639
m_mn_activeman(mn_activeman),
3740
m_dmnman(dmnman),
3841
m_llmq_ctx(llmq_ctx),
@@ -96,7 +99,7 @@ void CDSNotificationInterface::UpdatedBlockTip(const CBlockIndex *pindexNew, con
9699
m_llmq_ctx->qdkgsman->UpdatedBlockTip(pindexNew, fInitialDownload);
97100
m_llmq_ctx->ehfSignalsHandler->UpdatedBlockTip(pindexNew);
98101

99-
if (!fDisableGovernance) m_govman.UpdatedBlockTip(pindexNew, m_connman, m_mn_activeman);
102+
if (!fDisableGovernance) m_govman.UpdatedBlockTip(pindexNew, m_connman, m_peerman, m_mn_activeman);
100103
}
101104

102105
void CDSNotificationInterface::TransactionAddedToMempool(const CTransactionRef& ptx, int64_t nAcceptTime)

src/dsnotificationinterface.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ class CConnman;
1212
class CDeterministicMNManager;
1313
class CGovernanceManager;
1414
class CMasternodeSync;
15+
class PeerManager;
1516
struct CJContext;
1617
struct LLMQContext;
1718

@@ -21,6 +22,7 @@ class CDSNotificationInterface : public CValidationInterface
2122
explicit CDSNotificationInterface(CConnman& connman,
2223
CMasternodeSync& mn_sync,
2324
CGovernanceManager& govman,
25+
PeerManager& peerman,
2426
const CActiveMasternodeManager* const mn_activeman,
2527
const std::unique_ptr<CDeterministicMNManager>& dmnman,
2628
const std::unique_ptr<LLMQContext>& llmq_ctx,
@@ -45,10 +47,9 @@ class CDSNotificationInterface : public CValidationInterface
4547

4648
private:
4749
CConnman& m_connman;
48-
4950
CMasternodeSync& m_mn_sync;
5051
CGovernanceManager& m_govman;
51-
52+
PeerManager& m_peerman;
5253
const CActiveMasternodeManager* const m_mn_activeman;
5354
const std::unique_ptr<CDeterministicMNManager>& m_dmnman;
5455
const std::unique_ptr<LLMQContext>& m_llmq_ctx;

src/governance/governance.cpp

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ bool CGovernanceManager::SerializeVoteForHash(const uint256& nHash, CDataStream&
119119
return cmapVoteToObject.Get(nHash, pGovobj) && pGovobj->GetVoteFile().SerializeVoteToStream(nHash, ss);
120120
}
121121

122-
PeerMsgRet CGovernanceManager::ProcessMessage(CNode& peer, CConnman& connman, std::string_view msg_type, CDataStream& vRecv)
122+
PeerMsgRet CGovernanceManager::ProcessMessage(CNode& peer, CConnman& connman, PeerManager& peerman, std::string_view msg_type, CDataStream& vRecv)
123123
{
124124
if (fDisableGovernance) return {};
125125
if (m_mn_sync == nullptr || !m_mn_sync->IsBlockchainSynced()) return {};
@@ -213,7 +213,7 @@ PeerMsgRet CGovernanceManager::ProcessMessage(CNode& peer, CConnman& connman, st
213213
return {};
214214
}
215215

216-
AddGovernanceObject(govobj, connman, &peer);
216+
AddGovernanceObject(govobj, peerman, &peer);
217217
}
218218

219219
// A NEW GOVERNANCE OBJECT VOTE HAS ARRIVED
@@ -248,7 +248,7 @@ PeerMsgRet CGovernanceManager::ProcessMessage(CNode& peer, CConnman& connman, st
248248
if (ProcessVote(&peer, vote, exception, connman)) {
249249
LogPrint(BCLog::GOBJECT, "MNGOVERNANCEOBJECTVOTE -- %s new\n", strHash);
250250
m_mn_sync->BumpAssetLastTime("MNGOVERNANCEOBJECTVOTE");
251-
vote.Relay(connman, *m_mn_sync, tip_mn_list);
251+
vote.Relay(peerman, *m_mn_sync, tip_mn_list);
252252
} else {
253253
LogPrint(BCLog::GOBJECT, "MNGOVERNANCEOBJECTVOTE -- Rejected vote, error = %s\n", exception.what());
254254
if ((exception.GetNodePenalty() != 0) && m_mn_sync->IsSynced()) {
@@ -260,7 +260,7 @@ PeerMsgRet CGovernanceManager::ProcessMessage(CNode& peer, CConnman& connman, st
260260
return {};
261261
}
262262

263-
void CGovernanceManager::CheckOrphanVotes(CGovernanceObject& govobj, CConnman& connman)
263+
void CGovernanceManager::CheckOrphanVotes(CGovernanceObject& govobj, PeerManager& peerman)
264264
{
265265
uint256 nHash = govobj.GetHash();
266266
std::vector<vote_time_pair_t> vecVotePairs;
@@ -277,7 +277,7 @@ void CGovernanceManager::CheckOrphanVotes(CGovernanceObject& govobj, CConnman& c
277277
if (pairVote.second < nNow) {
278278
fRemove = true;
279279
} else if (govobj.ProcessVote(m_mn_metaman, *this, tip_mn_list, vote, e)) {
280-
vote.Relay(connman, *Assert(m_mn_sync), tip_mn_list);
280+
vote.Relay(peerman, *Assert(m_mn_sync), tip_mn_list);
281281
fRemove = true;
282282
}
283283
if (fRemove) {
@@ -286,7 +286,7 @@ void CGovernanceManager::CheckOrphanVotes(CGovernanceObject& govobj, CConnman& c
286286
}
287287
}
288288

289-
void CGovernanceManager::AddGovernanceObject(CGovernanceObject& govobj, CConnman& connman, const CNode* pfrom)
289+
void CGovernanceManager::AddGovernanceObject(CGovernanceObject& govobj, PeerManager& peerman, const CNode* pfrom)
290290
{
291291
uint256 nHash = govobj.GetHash();
292292
std::string strHash = nHash.ToString();
@@ -331,7 +331,7 @@ void CGovernanceManager::AddGovernanceObject(CGovernanceObject& govobj, CConnman
331331
}
332332

333333
LogPrint(BCLog::GOBJECT, "CGovernanceManager::AddGovernanceObject -- %s new, received from peer %s\n", strHash, pfrom ? pfrom->GetLogString() : "nullptr");
334-
govobj.Relay(connman, *Assert(m_mn_sync));
334+
govobj.Relay(peerman, *Assert(m_mn_sync));
335335

336336
// Update the rate buffer
337337
MasternodeRateUpdate(govobj);
@@ -340,7 +340,7 @@ void CGovernanceManager::AddGovernanceObject(CGovernanceObject& govobj, CConnman
340340

341341
// WE MIGHT HAVE PENDING/ORPHAN VOTES FOR THIS OBJECT
342342

343-
CheckOrphanVotes(govobj, connman);
343+
CheckOrphanVotes(govobj, peerman);
344344

345345
// SEND NOTIFICATION TO SCRIPT/ZMQ
346346
GetMainSignals().NotifyGovernanceObject(std::make_shared<const Governance::Object>(govobj.Object()));
@@ -672,7 +672,7 @@ std::optional<const CSuperblock> CGovernanceManager::CreateSuperblockCandidate(i
672672
return CSuperblock(nNextSuperblock, std::move(payments));
673673
}
674674

675-
std::optional<const CGovernanceObject> CGovernanceManager::CreateGovernanceTrigger(const std::optional<const CSuperblock>& sb_opt, CConnman& connman,
675+
std::optional<const CGovernanceObject> CGovernanceManager::CreateGovernanceTrigger(const std::optional<const CSuperblock>& sb_opt, PeerManager& peerman,
676676
const CActiveMasternodeManager* const mn_activeman)
677677
{
678678
if (!fMasternodeMode) return std::nullopt;
@@ -718,11 +718,11 @@ std::optional<const CGovernanceObject> CGovernanceManager::CreateGovernanceTrigg
718718
}
719719

720720
// The trigger we just created looks good, submit it
721-
AddGovernanceObject(gov_sb, connman);
721+
AddGovernanceObject(gov_sb, peerman);
722722
return std::make_optional<CGovernanceObject>(gov_sb);
723723
}
724724

725-
void CGovernanceManager::VoteGovernanceTriggers(const std::optional<const CGovernanceObject>& trigger_opt, CConnman& connman,
725+
void CGovernanceManager::VoteGovernanceTriggers(const std::optional<const CGovernanceObject>& trigger_opt, CConnman& connman, PeerManager& peerman,
726726
const CActiveMasternodeManager* const mn_activeman)
727727
{
728728
// only active masternodes can vote on triggers
@@ -736,7 +736,7 @@ void CGovernanceManager::VoteGovernanceTriggers(const std::optional<const CGover
736736
assert(!votedFundingYesTriggerHash.has_value());
737737
// Vote YES-FUNDING for the trigger we like
738738
const uint256 gov_sb_hash = trigger_opt.value().GetHash();
739-
if (!VoteFundingTrigger(gov_sb_hash, VOTE_OUTCOME_YES, connman, mn_activeman)) {
739+
if (!VoteFundingTrigger(gov_sb_hash, VOTE_OUTCOME_YES, connman, peerman, mn_activeman)) {
740740
LogPrint(BCLog::GOBJECT, "CGovernanceManager::%s Voting YES-FUNDING for new trigger:%s failed\n", __func__, gov_sb_hash.ToString());
741741
// this should never happen, bail out
742742
return;
@@ -759,7 +759,7 @@ void CGovernanceManager::VoteGovernanceTriggers(const std::optional<const CGover
759759
LogPrint(BCLog::GOBJECT, "CGovernanceManager::%s Not voting NO-FUNDING for trigger:%s, we voted yes for it already\n", __func__, trigger_hash.ToString());
760760
continue;
761761
}
762-
if (!VoteFundingTrigger(trigger_hash, VOTE_OUTCOME_NO, connman, mn_activeman)) {
762+
if (!VoteFundingTrigger(trigger_hash, VOTE_OUTCOME_NO, connman, peerman, mn_activeman)) {
763763
LogPrint(BCLog::GOBJECT, "CGovernanceManager::%s Voting NO-FUNDING for trigger:%s failed\n", __func__, trigger_hash.ToString());
764764
// failing here is ok-ish
765765
continue;
@@ -768,7 +768,7 @@ void CGovernanceManager::VoteGovernanceTriggers(const std::optional<const CGover
768768
}
769769
}
770770

771-
bool CGovernanceManager::VoteFundingTrigger(const uint256& nHash, const vote_outcome_enum_t outcome, CConnman& connman,
771+
bool CGovernanceManager::VoteFundingTrigger(const uint256& nHash, const vote_outcome_enum_t outcome, CConnman& connman, PeerManager& peerman,
772772
const CActiveMasternodeManager* const mn_activeman)
773773
{
774774
if (!fMasternodeMode) return false;
@@ -778,7 +778,7 @@ bool CGovernanceManager::VoteFundingTrigger(const uint256& nHash, const vote_out
778778
vote.Sign(*mn_activeman);
779779

780780
CGovernanceException exception;
781-
if (!ProcessVoteAndRelay(vote, exception, connman)) {
781+
if (!ProcessVoteAndRelay(vote, exception, connman, peerman)) {
782782
LogPrint(BCLog::GOBJECT, "CGovernanceManager::%s Vote FUNDING %d for trigger:%s failed:%s\n", __func__, outcome, nHash.ToString(), exception.what());
783783
return false;
784784
}
@@ -1066,11 +1066,11 @@ bool CGovernanceManager::MasternodeRateCheck(const CGovernanceObject& govobj, bo
10661066
return false;
10671067
}
10681068

1069-
bool CGovernanceManager::ProcessVoteAndRelay(const CGovernanceVote& vote, CGovernanceException& exception, CConnman& connman)
1069+
bool CGovernanceManager::ProcessVoteAndRelay(const CGovernanceVote& vote, CGovernanceException& exception, CConnman& connman, PeerManager& peerman)
10701070
{
10711071
bool fOK = ProcessVote(/* pfrom = */ nullptr, vote, exception, connman);
10721072
if (fOK) {
1073-
vote.Relay(connman, *Assert(m_mn_sync), Assert(m_dmnman)->GetListAtChainTip());
1073+
vote.Relay(peerman, *Assert(m_mn_sync), Assert(m_dmnman)->GetListAtChainTip());
10741074
}
10751075
return fOK;
10761076
}
@@ -1129,7 +1129,7 @@ bool CGovernanceManager::ProcessVote(CNode* pfrom, const CGovernanceVote& vote,
11291129
return fOk;
11301130
}
11311131

1132-
void CGovernanceManager::CheckPostponedObjects(CConnman& connman)
1132+
void CGovernanceManager::CheckPostponedObjects(PeerManager& peerman)
11331133
{
11341134
if (!Assert(m_mn_sync)->IsSynced()) return;
11351135

@@ -1146,7 +1146,7 @@ void CGovernanceManager::CheckPostponedObjects(CConnman& connman)
11461146
bool fMissingConfirmations;
11471147
if (govobj.IsCollateralValid(strError, fMissingConfirmations)) {
11481148
if (govobj.IsValidLocally(Assert(m_dmnman)->GetListAtChainTip(), strError, false)) {
1149-
AddGovernanceObject(govobj, connman);
1149+
AddGovernanceObject(govobj, peerman);
11501150
} else {
11511151
LogPrint(BCLog::GOBJECT, "CGovernanceManager::CheckPostponedObjects -- %s invalid\n", nHash.ToString());
11521152
}
@@ -1179,7 +1179,7 @@ void CGovernanceManager::CheckPostponedObjects(CConnman& connman)
11791179
if (fValid) {
11801180
if (fReady) {
11811181
LogPrint(BCLog::GOBJECT, "CGovernanceManager::CheckPostponedObjects -- additional relay: hash = %s\n", govobj.GetHash().ToString());
1182-
govobj.Relay(connman, *m_mn_sync);
1182+
govobj.Relay(peerman, *m_mn_sync);
11831183
} else {
11841184
it++;
11851185
continue;
@@ -1474,7 +1474,7 @@ UniValue CGovernanceManager::ToJson() const
14741474
return jsonObj;
14751475
}
14761476

1477-
void CGovernanceManager::UpdatedBlockTip(const CBlockIndex* pindex, CConnman& connman, const CActiveMasternodeManager* const mn_activeman)
1477+
void CGovernanceManager::UpdatedBlockTip(const CBlockIndex* pindex, CConnman& connman, PeerManager& peerman, const CActiveMasternodeManager* const mn_activeman)
14781478
{
14791479
// Note this gets called from ActivateBestChain without cs_main being held
14801480
// so it should be safe to lock our mutex here without risking a deadlock
@@ -1486,8 +1486,8 @@ void CGovernanceManager::UpdatedBlockTip(const CBlockIndex* pindex, CConnman& co
14861486
}
14871487

14881488
const auto sb_opt = CreateSuperblockCandidate(pindex->nHeight);
1489-
const auto trigger_opt = CreateGovernanceTrigger(sb_opt, connman, mn_activeman);
1490-
VoteGovernanceTriggers(trigger_opt, connman, mn_activeman);
1489+
const auto trigger_opt = CreateGovernanceTrigger(sb_opt, peerman, mn_activeman);
1490+
VoteGovernanceTriggers(trigger_opt, connman, peerman, mn_activeman);
14911491

14921492
nCachedBlockHeight = pindex->nHeight;
14931493
LogPrint(BCLog::GOBJECT, "CGovernanceManager::UpdatedBlockTip -- nCachedBlockHeight: %d\n", nCachedBlockHeight);
@@ -1496,7 +1496,7 @@ void CGovernanceManager::UpdatedBlockTip(const CBlockIndex* pindex, CConnman& co
14961496
RemoveInvalidVotes();
14971497
}
14981498

1499-
CheckPostponedObjects(connman);
1499+
CheckPostponedObjects(peerman);
15001500

15011501
CSuperblockManager::ExecuteBestSuperblock(*this, Assert(m_dmnman)->GetListAtChainTip(), pindex->nHeight);
15021502
}

0 commit comments

Comments
 (0)