Only process orphan votes once
This commit is contained in:
parent
08e977efe5
commit
d167772643
@ -618,14 +618,15 @@ bool CGovernanceManager::ProcessVote(CNode* pfrom, const CGovernanceVote& vote,
|
|||||||
uint256 nHashGovobj = vote.GetParentHash();
|
uint256 nHashGovobj = vote.GetParentHash();
|
||||||
object_m_it it = mapObjects.find(nHashGovobj);
|
object_m_it it = mapObjects.find(nHashGovobj);
|
||||||
if(it == mapObjects.end()) {
|
if(it == mapObjects.end()) {
|
||||||
mapOrphanVotes.Insert(nHashGovobj, vote);
|
if(mapOrphanVotes.Insert(nHashGovobj, vote)) {
|
||||||
RequestGovernanceObject(pfrom, nHashGovobj);
|
RequestGovernanceObject(pfrom, nHashGovobj);
|
||||||
std::ostringstream ostr;
|
std::ostringstream ostr;
|
||||||
ostr << "CGovernanceManager::ProcessVote -- Unknown parent object "
|
ostr << "CGovernanceManager::ProcessVote -- Unknown parent object "
|
||||||
<< ", MN outpoint = " << vote.GetVinMasternode().prevout.ToStringShort()
|
<< ", MN outpoint = " << vote.GetVinMasternode().prevout.ToStringShort()
|
||||||
<< ", governance object hash = " << vote.GetParentHash().ToString() << "\n";
|
<< ", governance object hash = " << vote.GetParentHash().ToString() << "\n";
|
||||||
LogPrintf(ostr.str().c_str());
|
LogPrintf(ostr.str().c_str());
|
||||||
exception = CGovernanceException(ostr.str(), GOVERNANCE_EXCEPTION_WARNING);
|
exception = CGovernanceException(ostr.str(), GOVERNANCE_EXCEPTION_WARNING);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -814,14 +815,15 @@ bool CGovernanceObject::ProcessVote(CNode* pfrom,
|
|||||||
{
|
{
|
||||||
int nMNIndex = governance.GetMasternodeIndex(vote.GetVinMasternode());
|
int nMNIndex = governance.GetMasternodeIndex(vote.GetVinMasternode());
|
||||||
if(nMNIndex < 0) {
|
if(nMNIndex < 0) {
|
||||||
mapOrphanVotes.Insert(vote.GetVinMasternode(), vote);
|
if(mapOrphanVotes.Insert(vote.GetVinMasternode(), vote)) {
|
||||||
if(pfrom) {
|
if(pfrom) {
|
||||||
mnodeman.AskForMN(pfrom, vote.GetVinMasternode());
|
mnodeman.AskForMN(pfrom, vote.GetVinMasternode());
|
||||||
|
}
|
||||||
|
std::ostringstream ostr;
|
||||||
|
ostr << "CGovernanceObject::UpdateVote -- Masternode index not found\n";
|
||||||
|
LogPrintf(ostr.str().c_str());
|
||||||
|
exception = CGovernanceException(ostr.str(), GOVERNANCE_EXCEPTION_WARNING);
|
||||||
}
|
}
|
||||||
std::ostringstream ostr;
|
|
||||||
ostr << "CGovernanceObject::UpdateVote -- Masternode index not found\n";
|
|
||||||
LogPrintf(ostr.str().c_str());
|
|
||||||
exception = CGovernanceException(ostr.str(), GOVERNANCE_EXCEPTION_WARNING);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user