From 687def56f3ed87aface1fe26177fe02ec263ea9a Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Wed, 20 Jun 2012 04:17:30 -0700 Subject: [PATCH] Support a 'lost sync' status change. --- src/Peer.cpp | 16 +++++++++------- src/newcoin.proto | 1 + 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/Peer.cpp b/src/Peer.cpp index f90b2935a4..056c4b57bd 100644 --- a/src/Peer.cpp +++ b/src/Peer.cpp @@ -803,21 +803,23 @@ void Peer::recvStatus(newcoin::TMStatusChange& packet) packet.set_networktime(theApp->getOPs().getNetworkTimeNC()); mLastStatus = packet; + if (packet.newevent() == newcoin::neLOST_SYNC) + { + mPreviousLedgerHash.zero(); + mClosedLedgerHash.zero(); + } if (packet.has_ledgerhash() && (packet.ledgerhash().size() == (256 / 8))) { // a peer has changed ledgers - if (packet.has_previousledgerhash() && (packet.previousledgerhash().size() == (256 / 8))) - memcpy(mPreviousLedgerHash.begin(), packet.previousledgerhash().data(), 256 / 8); - else - mPreviousLedgerHash = mClosedLedgerHash; memcpy(mClosedLedgerHash.begin(), packet.ledgerhash().data(), 256 / 8); mClosedLedgerTime = ptFromSeconds(packet.networktime()); Log(lsTRACE) << "peer LCL is " << mClosedLedgerHash.GetHex(); } - else if(packet.has_previousledgerhash() && packet.previousledgerhash().size() == (256 / 8)) + else mClosedLedgerHash.zero(); + if (packet.has_previousledgerhash() && packet.previousledgerhash().size() == (256 / 8)) { - memcpy(mClosedLedgerHash.begin(), packet.previousledgerhash().data(), 256 / 8); - mClosedLedgerTime = ptFromSeconds(packet.networktime()); + memcpy(mPreviousLedgerHash.begin(), packet.previousledgerhash().data(), 256 / 8); } + else mPreviousLedgerHash.zero(); } void Peer::recvGetLedger(newcoin::TMGetLedger& packet) diff --git a/src/newcoin.proto b/src/newcoin.proto index 38be08e20c..1b4e30f556 100644 --- a/src/newcoin.proto +++ b/src/newcoin.proto @@ -88,6 +88,7 @@ enum NodeEvent { neCLOSING_LEDGER = 1; // closing a ledger because its close time has come neACCEPTED_LEDGER = 2; // accepting a closed ledger, we have finished computing it neSWITCHED_LEDGER = 3; // changing due to network consensus + neLOST_SYNC = 4; } message TMStatusChange {