Be more aggressive in finding ledgers that other nodes want.

This commit is contained in:
JoelKatz
2013-01-04 15:50:16 -08:00
parent d998feb13c
commit 217573599d

View File

@@ -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<Ledger>(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()