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