|
|
@ -352,7 +352,7 @@ bool BlockManager::LoadBlockIndexDB(const Consensus::Params& consensus_params)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for (std::set<int>::iterator it = setBlkDataFiles.begin(); it != setBlkDataFiles.end(); it++) {
|
|
|
|
for (std::set<int>::iterator it = setBlkDataFiles.begin(); it != setBlkDataFiles.end(); it++) {
|
|
|
|
FlatFilePos pos(*it, 0);
|
|
|
|
FlatFilePos pos(*it, 0);
|
|
|
|
if (CAutoFile(OpenBlockFile(pos, true), SER_DISK, CLIENT_VERSION).IsNull()) {
|
|
|
|
if (AutoFile{OpenBlockFile(pos, true)}.IsNull()) {
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -454,13 +454,13 @@ CBlockFileInfo* BlockManager::GetBlockFileInfo(size_t n)
|
|
|
|
static bool UndoWriteToDisk(const CBlockUndo& blockundo, FlatFilePos& pos, const uint256& hashBlock, const CMessageHeader::MessageStartChars& messageStart)
|
|
|
|
static bool UndoWriteToDisk(const CBlockUndo& blockundo, FlatFilePos& pos, const uint256& hashBlock, const CMessageHeader::MessageStartChars& messageStart)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// Open history file to append
|
|
|
|
// Open history file to append
|
|
|
|
CAutoFile fileout(OpenUndoFile(pos), SER_DISK, CLIENT_VERSION);
|
|
|
|
AutoFile fileout{OpenUndoFile(pos)};
|
|
|
|
if (fileout.IsNull()) {
|
|
|
|
if (fileout.IsNull()) {
|
|
|
|
return error("%s: OpenUndoFile failed", __func__);
|
|
|
|
return error("%s: OpenUndoFile failed", __func__);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Write index header
|
|
|
|
// Write index header
|
|
|
|
unsigned int nSize = GetSerializeSize(blockundo, fileout.GetVersion());
|
|
|
|
unsigned int nSize = GetSerializeSize(blockundo, CLIENT_VERSION);
|
|
|
|
fileout << messageStart << nSize;
|
|
|
|
fileout << messageStart << nSize;
|
|
|
|
|
|
|
|
|
|
|
|
// Write undo data
|
|
|
|
// Write undo data
|
|
|
@ -489,14 +489,14 @@ bool UndoReadFromDisk(CBlockUndo& blockundo, const CBlockIndex* pindex)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Open history file to read
|
|
|
|
// Open history file to read
|
|
|
|
CAutoFile filein(OpenUndoFile(pos, true), SER_DISK, CLIENT_VERSION);
|
|
|
|
AutoFile filein{OpenUndoFile(pos, true)};
|
|
|
|
if (filein.IsNull()) {
|
|
|
|
if (filein.IsNull()) {
|
|
|
|
return error("%s: OpenUndoFile failed", __func__);
|
|
|
|
return error("%s: OpenUndoFile failed", __func__);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Read block
|
|
|
|
// Read block
|
|
|
|
uint256 hashChecksum;
|
|
|
|
uint256 hashChecksum;
|
|
|
|
CHashVerifier<CAutoFile> verifier(&filein); // We need a CHashVerifier as reserializing may lose data
|
|
|
|
HashVerifier verifier{filein}; // Use HashVerifier as reserializing may lose data, c.f. commit d342424301013ec47dc146a4beb49d5c9319d80a
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
verifier << pindex->pprev->GetBlockHash();
|
|
|
|
verifier << pindex->pprev->GetBlockHash();
|
|
|
|
verifier >> blockundo;
|
|
|
|
verifier >> blockundo;
|
|
|
@ -768,7 +768,7 @@ bool ReadRawBlockFromDisk(std::vector<uint8_t>& block, const FlatFilePos& pos, c
|
|
|
|
{
|
|
|
|
{
|
|
|
|
FlatFilePos hpos = pos;
|
|
|
|
FlatFilePos hpos = pos;
|
|
|
|
hpos.nPos -= 8; // Seek back 8 bytes for meta header
|
|
|
|
hpos.nPos -= 8; // Seek back 8 bytes for meta header
|
|
|
|
CAutoFile filein(OpenBlockFile(hpos, true), SER_DISK, CLIENT_VERSION);
|
|
|
|
AutoFile filein{OpenBlockFile(hpos, true)};
|
|
|
|
if (filein.IsNull()) {
|
|
|
|
if (filein.IsNull()) {
|
|
|
|
return error("%s: OpenBlockFile failed for %s", __func__, pos.ToString());
|
|
|
|
return error("%s: OpenBlockFile failed for %s", __func__, pos.ToString());
|
|
|
|
}
|
|
|
|
}
|
|
|
|