Skip to content

Commit 3811924

Browse files
committed
governance: drop Relay() from CGovernance{Object,Vote}
1 parent 63448ff commit 3811924

File tree

8 files changed

+39
-42
lines changed

8 files changed

+39
-42
lines changed

src/governance/governance.cpp

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,34 @@ bool CGovernanceManager::LoadCache(bool load_cache)
9898
return is_valid;
9999
}
100100

101+
void CGovernanceManager::RelayMessage(PeerManager& peerman, const CGovernanceObject& obj) const
102+
{
103+
if (!m_mn_sync.IsSynced()) {
104+
LogPrint(BCLog::GOBJECT, "%s -- won't relay until fully synced\n", __func__);
105+
return;
106+
}
107+
108+
CInv inv(MSG_GOVERNANCE_OBJECT, obj.GetHash());
109+
peerman.RelayInv(inv);
110+
}
111+
112+
void CGovernanceManager::RelayMessage(PeerManager& peerman, const CGovernanceVote& vote) const
113+
{
114+
if (!m_mn_sync.IsSynced()) {
115+
LogPrint(BCLog::GOBJECT, "%s -- won't relay until fully synced\n", __func__);
116+
return;
117+
}
118+
119+
const auto tip_mn_list = Assert(m_dmnman)->GetListAtChainTip();
120+
auto dmn = tip_mn_list.GetMNByCollateral(vote.GetMasternodeOutpoint());
121+
if (!dmn) {
122+
return;
123+
}
124+
125+
CInv inv(MSG_GOVERNANCE_OBJECT_VOTE, vote.GetHash());
126+
peerman.RelayInv(inv);
127+
}
128+
101129
// Accessors for thread-safe access to maps
102130
bool CGovernanceManager::HaveObjectForHash(const uint256& nHash) const
103131
{
@@ -273,7 +301,7 @@ MessageProcessingResult CGovernanceManager::ProcessMessage(CNode& peer, CConnman
273301
if (ProcessVote(&peer, vote, exception, connman)) {
274302
LogPrint(BCLog::GOBJECT, "MNGOVERNANCEOBJECTVOTE -- %s new\n", strHash);
275303
m_mn_sync.BumpAssetLastTime("MNGOVERNANCEOBJECTVOTE");
276-
vote.Relay(peerman, m_mn_sync, tip_mn_list);
304+
RelayMessage(peerman, vote);
277305
} else {
278306
LogPrint(BCLog::GOBJECT, "MNGOVERNANCEOBJECTVOTE -- Rejected vote, error = %s\n", exception.what());
279307
if ((exception.GetNodePenalty() != 0) && m_mn_sync.IsSynced()) {
@@ -305,7 +333,7 @@ void CGovernanceManager::CheckOrphanVotes(CGovernanceObject& govobj, PeerManager
305333
if (pairVote.second < nNow) {
306334
fRemove = true;
307335
} else if (govobj.ProcessVote(m_mn_metaman, *this, tip_mn_list, vote, e)) {
308-
vote.Relay(peerman, m_mn_sync, tip_mn_list);
336+
RelayMessage(peerman, vote);
309337
fRemove = true;
310338
}
311339
if (fRemove) {
@@ -359,7 +387,7 @@ void CGovernanceManager::AddGovernanceObject(CGovernanceObject& govobj, PeerMana
359387
}
360388

361389
LogPrint(BCLog::GOBJECT, "CGovernanceManager::AddGovernanceObject -- %s new, received from peer %s\n", strHash, pfrom ? pfrom->GetLogString() : "nullptr");
362-
govobj.Relay(peerman, m_mn_sync);
390+
RelayMessage(peerman, govobj);
363391

364392
// Update the rate buffer
365393
MasternodeRateUpdate(govobj);
@@ -852,9 +880,9 @@ bool CGovernanceManager::MasternodeRateCheck(const CGovernanceObject& govobj, bo
852880

853881
bool CGovernanceManager::ProcessVoteAndRelay(const CGovernanceVote& vote, CGovernanceException& exception, CConnman& connman, PeerManager& peerman)
854882
{
855-
bool fOK = ProcessVote(/* pfrom = */ nullptr, vote, exception, connman);
883+
bool fOK = ProcessVote(/*pfrom=*/nullptr, vote, exception, connman);
856884
if (fOK) {
857-
vote.Relay(peerman, m_mn_sync, Assert(m_dmnman)->GetListAtChainTip());
885+
RelayMessage(peerman, vote);
858886
}
859887
return fOK;
860888
}
@@ -962,7 +990,7 @@ void CGovernanceManager::CheckPostponedObjects(PeerManager& peerman)
962990
if (fValid) {
963991
if (fReady) {
964992
LogPrint(BCLog::GOBJECT, "CGovernanceManager::CheckPostponedObjects -- additional relay: hash = %s\n", govobj.GetHash().ToString());
965-
govobj.Relay(peerman, m_mn_sync);
993+
RelayMessage(peerman, govobj);
966994
} else {
967995
it++;
968996
continue;

src/governance/governance.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,9 @@ class CGovernanceManager : public GovernanceStore, public GovernanceSignerParent
281281

282282
bool IsValid() const override { return is_valid; }
283283

284+
void RelayMessage(PeerManager& peerman, const CGovernanceObject& obj) const;
285+
void RelayMessage(PeerManager& peerman, const CGovernanceVote& vote) const;
286+
284287
/**
285288
* This is called by AlreadyHave in net_processing.cpp as part of the inventory
286289
* retrieval process. Returns true if we want to retrieve the object, otherwise

src/governance/object.cpp

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -588,18 +588,6 @@ bool CGovernanceObject::GetCurrentMNVotes(const COutPoint& mnCollateralOutpoint,
588588
return true;
589589
}
590590

591-
void CGovernanceObject::Relay(PeerManager& peerman, const CMasternodeSync& mn_sync) const
592-
{
593-
// Do not relay until fully synced
594-
if (!mn_sync.IsSynced()) {
595-
LogPrint(BCLog::GOBJECT, "CGovernanceObject::Relay -- won't relay until fully synced\n");
596-
return;
597-
}
598-
599-
CInv inv(MSG_GOVERNANCE_OBJECT, GetHash());
600-
peerman.RelayInv(inv);
601-
}
602-
603591
void CGovernanceObject::UpdateSentinelVariables(const CDeterministicMNList& tip_mn_list)
604592
{
605593
// CALCULATE MINIMUM SUPPORT LEVELS REQUIRED

src/governance/object.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ class ChainstateManager;
2424
class CMasternodeMetaMan;
2525
class CMasternodeSync;
2626
class CNode;
27-
class PeerManager;
2827

2928
extern RecursiveMutex cs_main;
3029

@@ -253,8 +252,6 @@ class CGovernanceObject
253252

254253
UniValue GetJSONObject() const;
255254

256-
void Relay(PeerManager& peerman, const CMasternodeSync& mn_sync) const;
257-
258255
uint256 GetHash() const;
259256
uint256 GetDataHash() const;
260257

src/governance/vote.cpp

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -101,23 +101,6 @@ std::string CGovernanceVote::ToString(const CDeterministicMNList& tip_mn_list) c
101101
voteWeight);
102102
}
103103

104-
void CGovernanceVote::Relay(PeerManager& peerman, const CMasternodeSync& mn_sync, const CDeterministicMNList& tip_mn_list) const
105-
{
106-
// Do not relay until fully synced
107-
if (!mn_sync.IsSynced()) {
108-
LogPrint(BCLog::GOBJECT, "CGovernanceVote::Relay -- won't relay until fully synced\n");
109-
return;
110-
}
111-
112-
auto dmn = tip_mn_list.GetMNByCollateral(masternodeOutpoint);
113-
if (!dmn) {
114-
return;
115-
}
116-
117-
CInv inv(MSG_GOVERNANCE_OBJECT_VOTE, GetHash());
118-
peerman.RelayInv(inv);
119-
}
120-
121104
void CGovernanceVote::UpdateHash() const
122105
{
123106
// Note: doesn't match serialization

src/governance/vote.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ class CGovernanceVote;
1616
class CMasternodeSync;
1717
class CKey;
1818
class CKeyID;
19-
class PeerManager;
2019

2120
// INTENTION OF MASTERNODES REGARDING ITEM
2221
enum vote_outcome_enum_t : int {
@@ -106,7 +105,6 @@ class CGovernanceVote
106105
::ToString(nVoteOutcome) + "|" +
107106
::ToString(nTime);
108107
}
109-
void Relay(PeerManager& peerman, const CMasternodeSync& mn_sync, const CDeterministicMNList& tip_mn_list) const;
110108

111109
const COutPoint& GetMasternodeOutpoint() const { return masternodeOutpoint; }
112110

src/node/interfaces.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ class GOVImpl : public GOV
238238
PeerManager& peerman = EnsurePeerman(context());
239239
if (fMissingConfirmations) {
240240
context().govman->AddPostponedObject(govobj);
241-
govobj.Relay(peerman, *Assert(context().mn_sync));
241+
context().govman->RelayMessage(peerman, govobj);
242242
} else {
243243
context().govman->AddGovernanceObject(govobj, peerman);
244244
}

src/rpc/governance.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,7 @@ static RPCHelpMan gobject_submit()
396396
PeerManager& peerman = EnsurePeerman(node);
397397
if (fMissingConfirmations) {
398398
node.govman->AddPostponedObject(govobj);
399-
govobj.Relay(peerman, *CHECK_NONFATAL(node.mn_sync));
399+
node.govman->RelayMessage(peerman, govobj);
400400
} else {
401401
node.govman->AddGovernanceObject(govobj, peerman);
402402
}

0 commit comments

Comments
 (0)