From ba9afb56765046379b93cc17bf78d5daca9c1277 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Fri, 22 Jun 2012 17:56:30 -0700 Subject: [PATCH] Use peer add logic based on reported ledger closings. Fall back to all peers if no peers reported the ledger we want. --- src/NetworkOPs.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/NetworkOPs.cpp b/src/NetworkOPs.cpp index ebf6284143..c711487caa 100644 --- a/src/NetworkOPs.cpp +++ b/src/NetworkOPs.cpp @@ -432,26 +432,26 @@ bool NetworkOPs::checkLastClosedLedger(const std::vector& peerLis } if (!acq->isComplete()) { // add more peers - //JED: seems like you need to do something here so it knows in beginConsensus that it isn't on the the right ledger - // switch to an empty ledger so we won't keep going - //Ledger::pointer emptyLedger(new Ledger()); - //switchLastClosedLedger(emptyLedger); - - // JED: just ask everyone + int count = 0; std::vector peers=theApp->getConnectionPool().getPeerVector(); - for(int n=0; nisConnected()) acq->peerHas(peers[n]); - } - - /* JED this wasn't adding any peers. This is also an optimization so we can do this later - // FIXME: A peer may not have a ledger just because it accepts it as the network's consensus for (std::vector::const_iterator it = peerList.begin(), end = peerList.end(); it != end; ++it) { if ((*it)->getClosedLedgerHash() == closedLedger) + { + ++count; acq->peerHas(*it); - }*/ + } + } + if (!count) + { // just ask everyone + for (std::vector::const_iterator it = peerList.begin(), end = peerList.end(); + it != end; ++it) + { + if ((*it)->isConnected()) + acq->peerHas(*it); + } + } return true; } consensus = acq->getLedger();