diff --git a/src/cpp/ripple/Config.h b/src/cpp/ripple/Config.h index eb47e2e2c..83a852002 100644 --- a/src/cpp/ripple/Config.h +++ b/src/cpp/ripple/Config.h @@ -51,7 +51,7 @@ const int SYSTEM_WEBSOCKET_PUBLIC_PORT = 6563; // XXX Going away. #define DEFAULT_PEER_CONNECT_LOW_WATER 4 // Grows exponentially worse. -#define DEFAULT_PATH_SEARCH_SIZE 5 +#define DEFAULT_PATH_SEARCH_SIZE 4 enum SizedItemName { diff --git a/src/cpp/ripple/RippleCalc.cpp b/src/cpp/ripple/RippleCalc.cpp index 07772686e..9be60945a 100644 --- a/src/cpp/ripple/RippleCalc.cpp +++ b/src/cpp/ripple/RippleCalc.cpp @@ -912,6 +912,7 @@ TER RippleCalc::calcNodeAdvance( { // No more offers. Should be done rather than fall off end of book. cLog(lsWARNING) << "calcNodeAdvance: Unreachable: Fell off end of order book."; + return mOpenLedger ? telFAILED_PROCESSING : tecFAILED_PROCESSING; // FIXME assert(false); terResult = tefEXCEPTION; @@ -961,6 +962,7 @@ TER RippleCalc::calcNodeAdvance( else if (!bReverse) { cLog(lsWARNING) << boost::str(boost::format("calcNodeAdvance: unreachable: ran out of offers")); + return mOpenLedger ? telFAILED_PROCESSING : tecFAILED_PROCESSING; // TEMPORARY assert(false); // Can't run out of offers in forward direction. terResult = tefEXCEPTION; } @@ -2665,6 +2667,16 @@ void RippleCalc::pathNext(PathState::ref psrCur, const bool bMultiQuality, const lesCurrent = lesCheckpoint.duplicate(); // Restore from checkpoint. + for (unsigned int uIndex = psrCur->vpnNodes.size(); uIndex--;) + { + PaymentNode& pnCur = psrCur->vpnNodes[uIndex]; + + pnCur.saRevRedeem.zero(); + pnCur.saRevIssue.zero(); + pnCur.saRevDeliver.zero(); + pnCur.saFwdDeliver.zero(); + } + psrCur->terStatus = calcNodeRev(uLast, *psrCur, bMultiQuality); cLog(lsDEBUG) << "pathNext: Path after reverse: " << psrCur->getJson(); @@ -2957,10 +2969,11 @@ int iPass = 0; } else if (saDstAmountAct > saDstAmountReq) { - cLog(lsWARNING) << boost::str(boost::format("rippleCalc: TOO MUCH: saDstAmountAct=%s saDstAmountReq=%s") + cLog(lsFATAL) << boost::str(boost::format("rippleCalc: TOO MUCH: saDstAmountAct=%s saDstAmountReq=%s") % saDstAmountAct % saDstAmountReq); + return tefEXCEPTION; // TEMPORARY assert(false); } else if (saMaxAmountAct != saMaxAmountReq && iDry != vpsExpanded.size()) diff --git a/src/cpp/ripple/TransactionCheck.cpp b/src/cpp/ripple/TransactionCheck.cpp index 05431b6a9..9e4355320 100644 --- a/src/cpp/ripple/TransactionCheck.cpp +++ b/src/cpp/ripple/TransactionCheck.cpp @@ -8,6 +8,7 @@ SETUP_LOG(); bool TransactionEngine::checkInvariants(TER result, const SerializedTransaction& txn, TransactionEngineParams params) { +#if 0 const RippleAddress& srcAccount = txn.getFieldAccount(sfAccount); uint32 txnSeq = txn.getFieldU32(sfSequence); @@ -65,6 +66,7 @@ bool TransactionEngine::checkInvariants(TER result, const SerializedTransaction& assert(false); return tefINTERNAL; } +#endif return true; }