diff --git a/src/cpp/ripple/ripple_SHAMapSync.cpp b/src/cpp/ripple/ripple_SHAMapSync.cpp index 0831b7c05c..a753a5e117 100644 --- a/src/cpp/ripple/ripple_SHAMapSync.cpp +++ b/src/cpp/ripple/ripple_SHAMapSync.cpp @@ -327,11 +327,8 @@ SHAMapAddNode SHAMap::addKnownNode (const SHAMapNode& node, Blob const& rawNode, if (fullBelowCache.isPresent (iNode->getChildHash (branch))) return SHAMapAddNode::okay (); - try - { - iNode = getNodePointer (iNode->getChildNodeID (branch), iNode->getChildHash (branch), filter); - } - catch (SHAMapMissingNode&) + SHAMapTreeNode *nextNode = getNodePointerNT (iNode->getChildNodeID (branch), iNode->getChildHash (branch), filter); + if (!nextNode) { if (iNode->getDepth () != (node.getDepth () - 1)) { @@ -361,6 +358,7 @@ SHAMapAddNode SHAMap::addKnownNode (const SHAMapNode& node, Blob const& rawNode, mTNByID[node] = newNode; return SHAMapAddNode::useful (); } + iNode = nextNode; } WriteLog (lsTRACE, SHAMap) << "got node, already had it (late)";