From 0627ae22da7e8241a4d9903895ce017b840577d6 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Fri, 29 Jun 2012 23:32:26 -0700 Subject: [PATCH] A better fix. Take the format as a parameter in addRootNode. --- src/LedgerAcquire.cpp | 4 ++-- src/SHAMap.h | 5 ++--- src/SHAMapNodes.cpp | 8 -------- src/SHAMapSync.cpp | 10 +++++----- 4 files changed, 9 insertions(+), 18 deletions(-) diff --git a/src/LedgerAcquire.cpp b/src/LedgerAcquire.cpp index 7a0892b523..8049ddfbd0 100644 --- a/src/LedgerAcquire.cpp +++ b/src/LedgerAcquire.cpp @@ -326,7 +326,7 @@ bool LedgerAcquire::takeTxNode(const std::list& nodeIDs, { if (nodeIDit->isRoot()) { - if (!mLedger->peekTransactionMap()->addRootNode(mLedger->getTransHash(), *nodeDatait)) + if (!mLedger->peekTransactionMap()->addRootNode(mLedger->getTransHash(), *nodeDatait, STN_ARF_WIRE)) return false; } else if (!mLedger->peekTransactionMap()->addKnownNode(*nodeIDit, *nodeDatait, &tFilter)) @@ -358,7 +358,7 @@ bool LedgerAcquire::takeAsNode(const std::list& nodeIDs, { if (nodeIDit->isRoot()) { - if (!mLedger->peekAccountStateMap()->addRootNode(mLedger->getAccountHash(), *nodeDatait)) + if (!mLedger->peekAccountStateMap()->addRootNode(mLedger->getAccountHash(), *nodeDatait, STN_ARF_WIRE)) return false; } else if (!mLedger->peekAccountStateMap()->addKnownNode(*nodeIDit, *nodeDatait, &tFilter)) diff --git a/src/SHAMap.h b/src/SHAMap.h index 64eec583a8..f0083dd277 100644 --- a/src/SHAMap.h +++ b/src/SHAMap.h @@ -157,7 +157,6 @@ public: SHAMapTreeNode(const SHAMapTreeNode& node, uint32 seq); // copy node from older tree SHAMapTreeNode(const SHAMapNode& nodeID, SHAMapItem::pointer item, TNType type, uint32 seq); -#define STN_ARF_UNKNOWN 0 #define STN_ARF_PREFIXED 1 #define STN_ARF_WIRE 2 @@ -324,8 +323,8 @@ public: SHAMapSyncFilter* filter); bool getNodeFat(const SHAMapNode& node, std::vector& nodeIDs, std::list >& rawNode, bool fatLeaves); - bool addRootNode(const uint256& hash, const std::vector& rootNode); - bool addRootNode(const std::vector& rootNode); + bool addRootNode(const uint256& hash, const std::vector& rootNode, int format); + bool addRootNode(const std::vector& rootNode, int format); bool addKnownNode(const SHAMapNode& nodeID, const std::vector& rawNode, SHAMapSyncFilter* filter); diff --git a/src/SHAMapNodes.cpp b/src/SHAMapNodes.cpp index 3a9c682414..dbdc8ee109 100644 --- a/src/SHAMapNodes.cpp +++ b/src/SHAMapNodes.cpp @@ -192,14 +192,6 @@ SHAMapTreeNode::SHAMapTreeNode(const SHAMapNode& node, SHAMapItem::pointer item, SHAMapTreeNode::SHAMapTreeNode(const SHAMapNode& id, const std::vector& rawNode, uint32 seq, int format) : SHAMapNode(id), mSeq(seq), mType(tnERROR), mFullBelow(false) { - if (format == STN_ARF_UNKNOWN) - { - if ((rawNode.size() < 4) || (rawNode[0] < 10)) - format = STN_ARF_WIRE; - else - format = STN_ARF_PREFIXED; - } - if (format == STN_ARF_WIRE) { Serializer s(rawNode); diff --git a/src/SHAMapSync.cpp b/src/SHAMapSync.cpp index 538ebfdb35..548008a68b 100644 --- a/src/SHAMapSync.cpp +++ b/src/SHAMapSync.cpp @@ -122,7 +122,7 @@ bool SHAMap::getNodeFat(const SHAMapNode& wanted, std::vector& nodeI return true; } -bool SHAMap::addRootNode(const std::vector& rootNode) +bool SHAMap::addRootNode(const std::vector& rootNode, int format) { boost::recursive_mutex::scoped_lock sl(mLock); @@ -133,7 +133,7 @@ bool SHAMap::addRootNode(const std::vector& rootNode) return true; } - SHAMapTreeNode::pointer node = boost::make_shared(SHAMapNode(), rootNode, 0, STN_ARF_UNKNOWN); + SHAMapTreeNode::pointer node = boost::make_shared(SHAMapNode(), rootNode, 0, format); if (!node) return false; #ifdef DEBUG @@ -153,7 +153,7 @@ bool SHAMap::addRootNode(const std::vector& rootNode) return true; } -bool SHAMap::addRootNode(const uint256& hash, const std::vector& rootNode) +bool SHAMap::addRootNode(const uint256& hash, const std::vector& rootNode, int format) { boost::recursive_mutex::scoped_lock sl(mLock); @@ -165,7 +165,7 @@ bool SHAMap::addRootNode(const uint256& hash, const std::vector& return true; } - SHAMapTreeNode::pointer node = boost::make_shared(SHAMapNode(), rootNode, 0, STN_ARF_UNKNOWN); + SHAMapTreeNode::pointer node = boost::make_shared(SHAMapNode(), rootNode, 0, format); if (!node) return false; if (node->getNodeHash() != hash) @@ -447,7 +447,7 @@ BOOST_AUTO_TEST_CASE( SHAMapSync_test ) Log(lsFATAL) << "Didn't get root node " << gotNodes.size(); BOOST_FAIL("NodeSize"); } - if (!destination.addRootNode(*gotNodes.begin())) + if (!destination.addRootNode(*gotNodes.begin(), STN_ARF_WIRE)) { Log(lsFATAL) << "AddRootNode fails"; BOOST_FAIL("AddRootNode");