Process fee estimate file into temporary vector first to let sanity checking complete.
This commit is contained in:
parent
961ae93c85
commit
e59441f086
1 changed files with 15 additions and 4 deletions
|
@ -206,7 +206,7 @@ public:
|
||||||
}
|
}
|
||||||
if ((delta-1) >= (int)history.size())
|
if ((delta-1) >= (int)history.size())
|
||||||
delta = history.size(); // Last bucket is catch-all
|
delta = history.size(); // Last bucket is catch-all
|
||||||
entriesByConfirmations[delta-1].push_back(&entry);
|
entriesByConfirmations.at(delta-1).push_back(&entry);
|
||||||
}
|
}
|
||||||
for (size_t i = 0; i < entriesByConfirmations.size(); i++)
|
for (size_t i = 0; i < entriesByConfirmations.size(); i++)
|
||||||
{
|
{
|
||||||
|
@ -319,16 +319,27 @@ public:
|
||||||
|
|
||||||
void Read(CAutoFile& filein, const CFeeRate& minRelayFee)
|
void Read(CAutoFile& filein, const CFeeRate& minRelayFee)
|
||||||
{
|
{
|
||||||
filein >> nBestSeenHeight;
|
int nFileBestSeenHeight;
|
||||||
|
filein >> nFileBestSeenHeight;
|
||||||
size_t numEntries;
|
size_t numEntries;
|
||||||
filein >> numEntries;
|
filein >> numEntries;
|
||||||
history.clear();
|
if (numEntries <= 0 || numEntries > 10000)
|
||||||
|
throw runtime_error("Corrupt estimates file. Must have between 1 and 10k entires.");
|
||||||
|
|
||||||
|
std::vector<CBlockAverage> fileHistory;
|
||||||
|
|
||||||
for (size_t i = 0; i < numEntries; i++)
|
for (size_t i = 0; i < numEntries; i++)
|
||||||
{
|
{
|
||||||
CBlockAverage entry;
|
CBlockAverage entry;
|
||||||
entry.Read(filein, minRelayFee);
|
entry.Read(filein, minRelayFee);
|
||||||
history.push_back(entry);
|
fileHistory.push_back(entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Now that we've processed the entire fee estimate data file and not
|
||||||
|
//thrown any errors, we can copy it to our history
|
||||||
|
nBestSeenHeight = nFileBestSeenHeight;
|
||||||
|
history = fileHistory;
|
||||||
|
assert(history.size() > 0);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue