diff --git a/src/cpp/ripple/Ledger.cpp b/src/cpp/ripple/Ledger.cpp index 3db595c5a..803f24004 100644 --- a/src/cpp/ripple/Ledger.cpp +++ b/src/cpp/ripple/Ledger.cpp @@ -538,7 +538,24 @@ Ledger::pointer Ledger::loadByHash(const uint256& ledgerHash) std::string sql="SELECT * from Ledgers WHERE LedgerHash='"; sql.append(ledgerHash.GetHex()); sql.append("';"); - return getSQL(sql); + Ledger::pointer ret = getSQL(sql); + if (ret) + return ret; + HashedObject::pointer node = theApp->getHashedObjectStore().retrieve(ledgerHash); + if (!node) + return Ledger::pointer(); + try + { + Ledger::pointer ledger = boost::make_shared(strCopy(node->getData()), true); + if (ledger->getHash() == ledgerHash) + return ledger; + } + catch (...) + { + cLog(lsDEBUG) << "Exception trying to load ledger by hash: " << ledgerHash; + return Ledger::pointer(); + } + return Ledger::pointer(); } Ledger::pointer Ledger::getLastFullLedger()