diff --git a/src/ripple_app/paths/PathState.cpp b/src/ripple_app/paths/PathState.cpp index 57676d0bf..5008d5360 100644 --- a/src/ripple_app/paths/PathState.cpp +++ b/src/ripple_app/paths/PathState.cpp @@ -356,13 +356,19 @@ TER PathState::pushNode ( if (!!node.uCurrencyID != !!node.uIssuerID) { - WriteLog (lsDEBUG, RippleCalc) << "pushNode: currency is inconsistent with issuer."; - + WriteLog (lsDEBUG, RippleCalc) << + "pushNode: currency is inconsistent with issuer."; errorCode = temBAD_PATH; } - else if (!!previousNode.uAccountID) + else if (previousNode.uCurrencyID == node.uCurrencyID && + previousNode.uIssuerID == node.uIssuerID) + { + WriteLog (lsDEBUG, RippleCalc) << + "pushNode: bad path: offer to same currency and issuer"; + errorCode = temBAD_PATH; + } + else { - // Previous is an account. WriteLog (lsTRACE, RippleCalc) << "pushNode: imply for offer."; // Insert intermediary issuer account if needed.