|
|
@ -1199,19 +1199,19 @@ bool ReadBlockFromDisk(CBlock& block, const CDiskBlockPos& pos) |
|
|
|
// Open history file to read
|
|
|
|
// Open history file to read
|
|
|
|
CAutoFile filein(OpenBlockFile(pos, true), SER_DISK, CLIENT_VERSION); |
|
|
|
CAutoFile filein(OpenBlockFile(pos, true), SER_DISK, CLIENT_VERSION); |
|
|
|
if (filein.IsNull()) |
|
|
|
if (filein.IsNull()) |
|
|
|
return error("ReadBlockFromDisk: OpenBlockFile failed"); |
|
|
|
return error("ReadBlockFromDisk: OpenBlockFile failed for %s", pos.ToString()); |
|
|
|
|
|
|
|
|
|
|
|
// Read block
|
|
|
|
// Read block
|
|
|
|
try { |
|
|
|
try { |
|
|
|
filein >> block; |
|
|
|
filein >> block; |
|
|
|
} |
|
|
|
} |
|
|
|
catch (const std::exception& e) { |
|
|
|
catch (const std::exception& e) { |
|
|
|
return error("%s: Deserialize or I/O error - %s", __func__, e.what()); |
|
|
|
return error("%s: Deserialize or I/O error - %s at %s", __func__, e.what(), pos.ToString()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Check the header
|
|
|
|
// Check the header
|
|
|
|
if (!CheckProofOfWork(block.GetHash(), block.nBits)) |
|
|
|
if (!CheckProofOfWork(block.GetHash(), block.nBits)) |
|
|
|
return error("ReadBlockFromDisk: Errors in block header"); |
|
|
|
return error("ReadBlockFromDisk: Errors in block header at %s", pos.ToString()); |
|
|
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
@ -1221,7 +1221,8 @@ bool ReadBlockFromDisk(CBlock& block, const CBlockIndex* pindex) |
|
|
|
if (!ReadBlockFromDisk(block, pindex->GetBlockPos())) |
|
|
|
if (!ReadBlockFromDisk(block, pindex->GetBlockPos())) |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
if (block.GetHash() != pindex->GetBlockHash()) |
|
|
|
if (block.GetHash() != pindex->GetBlockHash()) |
|
|
|
return error("ReadBlockFromDisk(CBlock&, CBlockIndex*): GetHash() doesn't match index"); |
|
|
|
return error("ReadBlockFromDisk(CBlock&, CBlockIndex*): GetHash() doesn't match index for %s at %s", |
|
|
|
|
|
|
|
pindex->ToString(), pindex->GetBlockPos().ToString()); |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|