From 217573599dc9c104d1da170cd00a2ca3c609b2e2 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Fri, 4 Jan 2013 15:50:16 -0800 Subject: [PATCH] Be more aggressive in finding ledgers that other nodes want. --- src/cpp/ripple/Ledger.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/cpp/ripple/Ledger.cpp b/src/cpp/ripple/Ledger.cpp index 3db595c5aa..803f240044 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()