diff --git a/src/cpp/ripple/Ledger.cpp b/src/cpp/ripple/Ledger.cpp index aa8b16d570..185f5d9834 100644 --- a/src/cpp/ripple/Ledger.cpp +++ b/src/cpp/ripple/Ledger.cpp @@ -647,6 +647,14 @@ Json::Value Ledger::getJson(int options) } ledger["accountState"] = state; } + if (mAccountStateMap && ((options & LEDGER_JSON_HISTORY) != 0)) + { + SLE::pointer hashIndex = getSLE(getLedgerHashIndex()); + if (hashIndex) + ledger["previousHashes"] = hashIndex->getJson(0); + else + ledger["previousHashes"] = "missing"; + } ledger["seqNum"] = boost::lexical_cast(mLedgerSeq); return ledger; } @@ -1112,7 +1120,6 @@ void Ledger::updateSkipList() if (!skipList) { skipList = boost::make_shared(ltLEDGER_HASHES, hash); - skipList->setFieldU32(sfFirstLedgerSequence, prevIndex); } else hashes = skipList->getFieldV256(sfHashes).peekValue(); @@ -1135,7 +1142,6 @@ void Ledger::updateSkipList() if (!skipList) { skipList = boost::make_shared(ltLEDGER_HASHES, hash); - skipList->setFieldU32(sfFirstLedgerSequence, prevIndex); } else hashes = skipList->getFieldV256(sfHashes).peekValue(); diff --git a/src/cpp/ripple/LedgerFormats.cpp b/src/cpp/ripple/LedgerFormats.cpp index cca4ba8c0e..c1c36bb7b8 100644 --- a/src/cpp/ripple/LedgerFormats.cpp +++ b/src/cpp/ripple/LedgerFormats.cpp @@ -96,7 +96,7 @@ static bool LEFInit() ; DECLARE_LEF(LedgerHashes, ltLEDGER_HASHES) - << SOElement(sfFirstLedgerSequence, SOE_OPTIONAL) + << SOElement(sfFirstLedgerSequence, SOE_OPTIONAL) // Remove if we do a ledger restart << SOElement(sfLastLedgerSequence, SOE_OPTIONAL) << SOElement(sfHashes, SOE_REQUIRED) ; diff --git a/src/cpp/ripple/SerializeProto.h b/src/cpp/ripple/SerializeProto.h index cc8a932b7b..57ef55200f 100644 --- a/src/cpp/ripple/SerializeProto.h +++ b/src/cpp/ripple/SerializeProto.h @@ -56,7 +56,7 @@ FIELD(BondAmount, UINT32, 23) FIELD(LoadFee, UINT32, 24) FIELD(OfferSequence, UINT32, 25) - FIELD(FirstLedgerSequence, UINT32, 26) + FIELD(FirstLedgerSequence, UINT32, 26) // Deprecated: do not use FIELD(LastLedgerSequence, UINT32, 27) FIELD(TransactionIndex, UINT32, 28) FIELD(OperationLimit, UINT32, 29)