From 6e4cd5bc9c7578a3abbe3e0779f27fa97ab1a9fa Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Mon, 13 Jan 2014 21:20:41 -0800 Subject: [PATCH] Don't send nodes twice in getNodeFat --- src/ripple_app/shamap/SHAMapSync.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/ripple_app/shamap/SHAMapSync.cpp b/src/ripple_app/shamap/SHAMapSync.cpp index ed1853cb9..562428062 100644 --- a/src/ripple_app/shamap/SHAMapSync.cpp +++ b/src/ripple_app/shamap/SHAMapSync.cpp @@ -239,13 +239,19 @@ bool SHAMap::getNodeFat (const SHAMapNode& wanted, std::vector& node } int count; + bool skipNode = false; do { - Serializer s; - node->addRaw (s, snfWIRE); - nodeIDs.push_back(*node); - rawNodes.push_back (s.peekData ()); + if (skipNode) + skipNode = false; + else + { + Serializer s; + node->addRaw (s, snfWIRE); + nodeIDs.push_back(*node); + rawNodes.push_back (s.peekData ()); + } if ((!fatRoot && node->isRoot ()) || node->isLeaf ()) // don't get a fat root, can't get a fat leaf return true; @@ -264,6 +270,7 @@ bool SHAMap::getNodeFat (const SHAMapNode& wanted, std::vector& node nextNode->addRaw (s, snfWIRE); nodeIDs.push_back (*nextNode); rawNodes.push_back (s.peekData ()); + skipNode = true; // Don't add this node again if we loop } }