Skip to content

Commit 5849e3e

Browse files
committed
[BUG] Spork signer doesn't persist new spork value to DB
1 parent 129446a commit 5849e3e

File tree

2 files changed

+15
-10
lines changed

2 files changed

+15
-10
lines changed

src/spork.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -167,11 +167,9 @@ int CSporkManager::ProcessSporkMsg(CSporkMessage& spork)
167167
LogPrintf("%s : got %s spork %d (%s) with value %d (signed at %d)\n", __func__,
168168
strStatus, spork.nSporkID, sporkName, spork.nValue, spork.nTimeSigned);
169169

170-
AddOrUpdateSporkMessage(spork);
170+
AddOrUpdateSporkMessage(spork, true);
171171
spork.Relay();
172172

173-
// PIVX: add to spork database.
174-
pSporkDB->WriteSpork(spork.nSporkID, spork);
175173
// All good.
176174
return 0;
177175
}
@@ -201,18 +199,24 @@ bool CSporkManager::UpdateSpork(SporkId nSporkID, int64_t nValue)
201199

202200
if (spork.Sign(strMasterPrivKey)) {
203201
spork.Relay();
204-
AddOrUpdateSporkMessage(spork);
202+
AddOrUpdateSporkMessage(spork, true);
205203
return true;
206204
}
207205

208206
return false;
209207
}
210208

211-
void CSporkManager::AddOrUpdateSporkMessage(const CSporkMessage& spork)
209+
void CSporkManager::AddOrUpdateSporkMessage(const CSporkMessage& spork, bool flush)
212210
{
213-
LOCK(cs);
214-
mapSporks[spork.GetHash()] = spork;
215-
mapSporksActive[spork.nSporkID] = spork;
211+
{
212+
LOCK(cs);
213+
mapSporks[spork.GetHash()] = spork;
214+
mapSporksActive[spork.nSporkID] = spork;
215+
}
216+
if (flush) {
217+
// add to spork database.
218+
pSporkDB->WriteSpork(spork.nSporkID, spork);
219+
}
216220
}
217221

218222
// grab the spork value, and see if it's off

src/spork.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,9 @@ class CSporkManager
8888
int64_t GetSporkValue(SporkId nSporkID);
8989
// Create/Sign/Relay the spork message, and update the maps
9090
bool UpdateSpork(SporkId nSporkID, int64_t nValue);
91-
// Add spork message to mapSporks and mapSporksActive
92-
void AddOrUpdateSporkMessage(const CSporkMessage& spork);
91+
// Add spork message to mapSporks and mapSporksActive.
92+
// if flush=true, save to DB as well
93+
void AddOrUpdateSporkMessage(const CSporkMessage& spork, bool flush = false);
9394

9495
bool IsSporkActive(SporkId nSporkID);
9596
std::string GetSporkNameByID(SporkId id);

0 commit comments

Comments
 (0)