Changeset View
Changeset View
Standalone View
Standalone View
src/addrdb.cpp
Show First 20 Lines • Show All 89 Lines • ▼ Show 20 Lines | if (hashIn != hashTmp) | ||||
return error("%s: Checksum mismatch, data corrupted", __func__); | return error("%s: Checksum mismatch, data corrupted", __func__); | ||||
uint8_t pchMsgTmp[4]; | uint8_t pchMsgTmp[4]; | ||||
try { | try { | ||||
// de-serialize file header (network specific magic number) and .. | // de-serialize file header (network specific magic number) and .. | ||||
ssBanlist >> FLATDATA(pchMsgTmp); | ssBanlist >> FLATDATA(pchMsgTmp); | ||||
// ... verify the network matches ours | // ... verify the network matches ours | ||||
if (memcmp(pchMsgTmp, Params().DiskMagic(), sizeof(pchMsgTmp))) | if (memcmp(pchMsgTmp, std::begin(Params().DiskMagic()), | ||||
sizeof(pchMsgTmp))) { | |||||
return error("%s: Invalid network magic number", __func__); | return error("%s: Invalid network magic number", __func__); | ||||
} | |||||
// de-serialize ban data | // de-serialize ban data | ||||
ssBanlist >> banSet; | ssBanlist >> banSet; | ||||
} 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", __func__, e.what()); | ||||
} | } | ||||
return true; | return true; | ||||
▲ Show 20 Lines • Show All 76 Lines • ▼ Show 20 Lines | |||||
bool CAddrDB::Read(CAddrMan &addr, CDataStream &ssPeers) { | bool CAddrDB::Read(CAddrMan &addr, CDataStream &ssPeers) { | ||||
uint8_t pchMsgTmp[4]; | uint8_t pchMsgTmp[4]; | ||||
try { | try { | ||||
// de-serialize file header (network specific magic number) and .. | // de-serialize file header (network specific magic number) and .. | ||||
ssPeers >> FLATDATA(pchMsgTmp); | ssPeers >> FLATDATA(pchMsgTmp); | ||||
// ... verify the network matches ours | // ... verify the network matches ours | ||||
if (memcmp(pchMsgTmp, Params().DiskMagic(), sizeof(pchMsgTmp))) | if (memcmp(pchMsgTmp, std::begin(Params().DiskMagic()), | ||||
sizeof(pchMsgTmp))) { | |||||
return error("%s: Invalid network magic number", __func__); | return error("%s: Invalid network magic number", __func__); | ||||
} | |||||
// de-serialize address data into one CAddrMan object | // de-serialize address data into one CAddrMan object | ||||
ssPeers >> addr; | ssPeers >> addr; | ||||
} catch (const std::exception &e) { | } catch (const std::exception &e) { | ||||
// de-serialization has failed, ensure addrman is left in a clean state | // de-serialization has failed, ensure addrman is left in a clean state | ||||
addr.Clear(); | addr.Clear(); | ||||
return error("%s: Deserialize or I/O error - %s", __func__, e.what()); | return error("%s: Deserialize or I/O error - %s", __func__, e.what()); | ||||
} | } | ||||
return true; | return true; | ||||
} | } |