More path fixes.

This commit is contained in:
JoelKatz
2013-07-02 23:18:58 -07:00
parent d8033012ac
commit 70ddbd7b91

View File

@@ -49,7 +49,7 @@ TER RippleCalc::calcNodeAdvance (
TER terResult = tesSUCCESS; TER terResult = tesSUCCESS;
WriteLog (lsDEBUG, RippleCalc) << "calcNodeAdvance"; WriteLog (lsDEBUG, RippleCalc) << "calcNodeAdvance: TakerPays:" << saTakerPays << " TakerGets:" << saTakerGets;
int loopCount = 0; int loopCount = 0;
@@ -476,6 +476,9 @@ TER RippleCalc::calcNodeDeliverRev (
% saOutPassAct % saOutPassAct
% saOutPlusFees); % saOutPlusFees);
if (saInPassReq > saTakerPays)
saInPassReq = saTakerPays;
if (!saInPassReq) if (!saInPassReq)
{ {
// After rounding did not want anything. // After rounding did not want anything.
@@ -519,9 +522,6 @@ TER RippleCalc::calcNodeDeliverRev (
if (tesSUCCESS != terResult) if (tesSUCCESS != terResult)
break; break;
if (saInPassAct > saTakerPays)
saInPassAct = saTakerPays;
if (saInPassAct < saInPassReq) if (saInPassAct < saInPassReq)
{ {
// Adjust output to conform to limited input. // Adjust output to conform to limited input.
@@ -691,7 +691,7 @@ TER RippleCalc::calcNodeDeliverFwd (
STAmount saInFunded = STAmount::mulRound (saOutPassFunded, saOfrRate, saTakerPays, true); // Offer maximum in - Limited by by payout. STAmount saInFunded = STAmount::mulRound (saOutPassFunded, saOfrRate, saTakerPays, true); // Offer maximum in - Limited by by payout.
STAmount saInTotal = STAmount::mulRound (saInFunded, saInFeeRate, true); // Offer maximum in with fees. STAmount saInTotal = STAmount::mulRound (saInFunded, saInFeeRate, true); // Offer maximum in with fees.
STAmount saInSum = std::min (saInTotal, saInReq - saInAct - saInFees); // In limited by remaining. STAmount saInSum = std::min (saInTotal, saInReq - saInAct - saInFees); // In limited by remaining.
STAmount saInPassAct = STAmount::divRound (saInSum, saInFeeRate, true); // In without fees. STAmount saInPassAct = std::min (saTakerPays, STAmount::divRound (saInSum, saInFeeRate, true)); // In without fees.
STAmount saOutPassMax = std::min (saOutPassFunded, STAmount::divRound (saInPassAct, saOfrRate, saTakerGets, true)); // Out limited by in remaining. STAmount saOutPassMax = std::min (saOutPassFunded, STAmount::divRound (saInPassAct, saOfrRate, saTakerGets, true)); // Out limited by in remaining.
STAmount saInPassFeesMax = saInSum - saInPassAct; STAmount saInPassFeesMax = saInSum - saInPassAct;
@@ -790,7 +790,7 @@ TER RippleCalc::calcNodeDeliverFwd (
assert (saOutPassAct < saOutPassMax); assert (saOutPassAct < saOutPassMax);
saInPassAct = STAmount::mulRound (saOutPassAct, saOfrRate, saInReq, true); saInPassAct = std::min (saTakerPays, STAmount::mulRound (saOutPassAct, saOfrRate, saInReq, true));
saInPassFees = std::min (saInPassFeesMax, STAmount::mulRound (saInPassAct, saInFeeRate, true)); saInPassFees = std::min (saInPassFeesMax, STAmount::mulRound (saInPassAct, saInFeeRate, true));
} }