diff --git a/src/cpp/ripple/LedgerEntrySet.cpp b/src/cpp/ripple/LedgerEntrySet.cpp index 5b6e6aa5fb..ab40fb2de7 100644 --- a/src/cpp/ripple/LedgerEntrySet.cpp +++ b/src/cpp/ripple/LedgerEntrySet.cpp @@ -1027,14 +1027,21 @@ void LedgerEntrySet::rippleCredit(const uint160& uSenderID, const uint160& uRece uint256 uIndex = Ledger::getRippleStateIndex(uSenderID, uReceiverID, saAmount.getCurrency()); SLE::pointer sleRippleState = entryCache(ltRIPPLE_STATE, uIndex); + assert(!!uSenderID && uSenderID != ACCOUNT_ONE); + assert(!!uReceiverID && uReceiverID != ACCOUNT_ONE); + if (!sleRippleState) { - cLog(lsDEBUG) << "rippleCredit: Creating ripple line: " << uIndex.ToString(); - STAmount saBalance = saAmount; saBalance.setIssuer(ACCOUNT_ONE); + cLog(lsDEBUG) << boost::str(boost::format("rippleCredit: create line: %s (%s) -> %s : %s") + % RippleAddress::createHumanAccountID(uSenderID) + % saBalance.getFullText() + % RippleAddress::createHumanAccountID(uReceiverID) + % saAmount.getFullText()); + sleRippleState = entryCreate(ltRIPPLE_STATE, uIndex); if (!bFlipped) @@ -1051,6 +1058,12 @@ void LedgerEntrySet::rippleCredit(const uint160& uSenderID, const uint160& uRece if (!bFlipped) saBalance.negate(); // Put balance in low terms. + cLog(lsDEBUG) << boost::str(boost::format("rippleCredit> %s (%s) -> %s : %s") + % RippleAddress::createHumanAccountID(uSenderID) + % saBalance.getFullText() + % RippleAddress::createHumanAccountID(uReceiverID) + % saAmount.getFullText()); + saBalance += saAmount; if (!bFlipped) @@ -1072,10 +1085,10 @@ STAmount LedgerEntrySet::rippleSend(const uint160& uSenderID, const uint160& uRe assert(!!uSenderID && !!uReceiverID); - if (uSenderID == uIssuerID || uReceiverID == uIssuerID) + if (uSenderID == uIssuerID || uReceiverID == uIssuerID || uIssuerID == ACCOUNT_ONE) { // Direct send: redeeming IOUs and/or sending own IOUs. - rippleCredit(uSenderID, uReceiverID, saAmount); + rippleCredit(uSenderID, uReceiverID, saAmount, false); saActual = saAmount; }