From 43425f39eb91d533d7a62ad9e3042ded01cb02b6 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Wed, 20 Jun 2012 18:38:28 -0700 Subject: [PATCH] Bugfixes. --- src/LedgerConsensus.cpp | 3 +++ src/NetworkOPs.cpp | 3 +++ src/Peer.cpp | 9 ++++++++- src/ValidationCollection.cpp | 2 +- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/LedgerConsensus.cpp b/src/LedgerConsensus.cpp index 30c1b404f..e3408ee76 100644 --- a/src/LedgerConsensus.cpp +++ b/src/LedgerConsensus.cpp @@ -323,7 +323,10 @@ void LedgerConsensus::statusChange(newcoin::NodeEvent event, Ledger::pointer led { // Send a node status change message to our peers newcoin::TMStatusChange s; if (!mHaveCorrectLCL) + { + Log(lsTRACE) << "Telling peers we have lost sync"; s.set_newevent(newcoin::neLOST_SYNC); + } else { s.set_newevent(event); diff --git a/src/NetworkOPs.cpp b/src/NetworkOPs.cpp index 40b08da42..f92a016f9 100644 --- a/src/NetworkOPs.cpp +++ b/src/NetworkOPs.cpp @@ -575,7 +575,10 @@ void NetworkOPs::endConsensus() std::vector peerList = theApp->getConnectionPool().getPeerVector(); for (std::vector::const_iterator it = peerList.begin(), end = peerList.end(); it != end; ++it) if (*it && ((*it)->getClosedLedgerHash() == deadLedger)) + { + Log(lsTRACE) << "Killing obsolete peer status"; (*it)->cycleStatus(); + } mConsensus = boost::shared_ptr(); } diff --git a/src/Peer.cpp b/src/Peer.cpp index 33c51dcc3..24fb29388 100644 --- a/src/Peer.cpp +++ b/src/Peer.cpp @@ -857,8 +857,10 @@ void Peer::recvStatus(newcoin::TMStatusChange& packet) if (packet.newevent() == newcoin::neLOST_SYNC) { + Log(lsTRACE) << "peer has lost sync"; mPreviousLedgerHash.zero(); mClosedLedgerHash.zero(); + return; } if (packet.has_ledgerhash() && (packet.ledgerhash().size() == (256 / 8))) { // a peer has changed ledgers @@ -866,7 +868,12 @@ void Peer::recvStatus(newcoin::TMStatusChange& packet) mClosedLedgerTime = ptFromSeconds(packet.networktime()); Log(lsTRACE) << "peer LCL is " << mClosedLedgerHash.GetHex(); } - else mClosedLedgerHash.zero(); + else + { + Log(lsTRACE) << "peer has no ledger hash"; + mClosedLedgerHash.zero(); + } + if (packet.has_previousledgerhash() && packet.previousledgerhash().size() == (256 / 8)) { memcpy(mPreviousLedgerHash.begin(), packet.previousledgerhash().data(), 256 / 8); diff --git a/src/ValidationCollection.cpp b/src/ValidationCollection.cpp index 6761110b1..a1ed90546 100644 --- a/src/ValidationCollection.cpp +++ b/src/ValidationCollection.cpp @@ -87,8 +87,8 @@ boost::unordered_map ValidationCollection::getCurrentValidations() { if (now > (it->second->getCloseTime() + LEDGER_INTERVAL)) { - it = mCurrentValidations.erase(it); Log(lsTRACE) << "Erasing validation for " << it->second->getLedgerHash().GetHex(); + it = mCurrentValidations.erase(it); } else {