|
|
@ -814,22 +814,12 @@ public: |
|
|
|
uint256 hashChecksum; |
|
|
|
uint256 hashChecksum; |
|
|
|
try { |
|
|
|
try { |
|
|
|
filein >> *this; |
|
|
|
filein >> *this; |
|
|
|
|
|
|
|
filein >> hashChecksum; |
|
|
|
} |
|
|
|
} |
|
|
|
catch (std::exception &e) { |
|
|
|
catch (std::exception &e) { |
|
|
|
return error("%s() : deserialize or I/O error", __PRETTY_FUNCTION__); |
|
|
|
return error("%s() : deserialize or I/O error", __PRETTY_FUNCTION__); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// for compatibility with pre-release code that didn't write checksums to undo data
|
|
|
|
|
|
|
|
// TODO: replace by a simply 'filein >> hashChecksum' in the above try block
|
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
filein >> hashChecksum; |
|
|
|
|
|
|
|
} catch (std::exception &e) { |
|
|
|
|
|
|
|
hashChecksum = 0; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
uint32_t hashInit = hashChecksum.Get64(0) & 0xFFFFFFFFUL; |
|
|
|
|
|
|
|
if (hashChecksum == 0 || memcmp(&hashInit, pchMessageStart, 4) == 0) |
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Verify checksum
|
|
|
|
// Verify checksum
|
|
|
|
CHashWriter hasher(SER_GETHASH, PROTOCOL_VERSION); |
|
|
|
CHashWriter hasher(SER_GETHASH, PROTOCOL_VERSION); |
|
|
|
hasher << hashBlock; |
|
|
|
hasher << hashBlock; |
|
|
|