diff --git a/src/ripple/rpc/handlers/Catalogue.cpp b/src/ripple/rpc/handlers/Catalogue.cpp index f7445d830..ce0ce721e 100644 --- a/src/ripple/rpc/handlers/Catalogue.cpp +++ b/src/ripple/rpc/handlers/Catalogue.cpp @@ -48,6 +48,9 @@ namespace ripple { +using time_point = NetClock::time_point; +using duration = NetClock::duration; + static constexpr uint16_t CATALOGUE_VERSION = 1; #define CATL 0x4C544143UL /*"CATL" in LE*/ @@ -109,10 +112,14 @@ private: auto const& info = ledger->info(); + uint64_t closeTime = info.closeTime.time_since_epoch().count(); + uint64_t parentCloseTime = + info.parentCloseTime.time_since_epoch().count(); + uint32_t closeTimeResolution = info.closeTimeResolution.count(); + // Write ledger header information if (!writeToFile(&info.seq, sizeof(info.seq)) || - !writeToFile( - &info.parentCloseTime, sizeof(info.parentCloseTime)) || + !writeToFile(&parentCloseTime, sizeof(parentCloseTime)) || !writeToFile(info.hash.data(), 32) || !writeToFile(info.txHash.data(), 32) || !writeToFile(info.accountHash.data(), 32) || @@ -122,9 +129,8 @@ private: !writeToFile(&info.accepted, sizeof(info.accepted)) || !writeToFile(&info.closeFlags, sizeof(info.closeFlags)) || !writeToFile( - &info.closeTimeResolution, - sizeof(info.closeTimeResolution)) || - !writeToFile(&info.closeTime, sizeof(info.closeTime))) + &closeTimeResolution, sizeof(closeTimeResolution)) || + !writeToFile(&closeTime, sizeof(closeTime))) { return false; } @@ -347,11 +353,14 @@ doCatalogueLoad(RPC::JsonContext& context) while (!infile.eof()) { LedgerInfo info; + uint64_t closeTime = -1; + uint64_t parentCloseTime = -1; + uint32_t closeTimeResolution = -1; if (!infile.read( reinterpret_cast(&info.seq), sizeof(info.seq)) || !infile.read( - reinterpret_cast(&info.parentCloseTime), - sizeof(info.parentCloseTime)) || + reinterpret_cast(&parentCloseTime), + sizeof(parentCloseTime)) || !infile.read(reinterpret_cast(info.hash.data()), 32) || !infile.read(reinterpret_cast(info.txHash.data()), 32) || !infile.read( @@ -369,20 +378,22 @@ doCatalogueLoad(RPC::JsonContext& context) reinterpret_cast(&info.closeFlags), sizeof(info.closeFlags)) || !infile.read( - reinterpret_cast(&info.closeTimeResolution), - sizeof(info.closeTimeResolution)) || + reinterpret_cast(&closeTimeResolution), + sizeof(closeTimeResolution)) || !infile.read( - reinterpret_cast(&info.closeTime), - sizeof(info.closeTime))) + reinterpret_cast(&closeTime), sizeof(closeTime))) { JLOG(context.j.warn()) << "Catalogue load expected but could not " "read the next ledger header."; break; } + info.closeTime = time_point{duration{closeTime}}; + info.parentCloseTime = time_point{duration{parentCloseTime}}; + info.closeTimeResolution = duration{closeTimeResolution}; JLOG(context.j.info()) << "Found ledger " << info.seq << "..."; - if (info.seq != expected_seq) + if (info.seq != expected_seq++) { JLOG(context.j.error()) << "Expected ledger " << expected_seq << ", bailing";