Correctly handle one-element paths. Don't call setCanonical, it's broken.

This commit is contained in:
JoelKatz
2013-04-08 17:44:04 -07:00
parent 46dbd3e967
commit c0049542a2
3 changed files with 4 additions and 3 deletions

View File

@@ -72,7 +72,7 @@ static bool bQualityCmp(const path_LQ_t& a, const path_LQ_t&b)
// A path is a default path if it is implied via src, dst, send, and sendmax. // A path is a default path if it is implied via src, dst, send, and sendmax.
bool Pathfinder::bDefaultPath(const STPath& spPath) bool Pathfinder::bDefaultPath(const STPath& spPath)
{ {
if (2 == spPath.mPath.size()) { if (2 >= spPath.mPath.size()) {
// Empty path is a default. Don't need to add it to return set. // Empty path is a default. Don't need to add it to return set.
cLog(lsTRACE) << "findPaths: empty path: direct"; cLog(lsTRACE) << "findPaths: empty path: direct";

View File

@@ -1330,7 +1330,7 @@ Json::Value RPCHandler::doRipplePathFind(Json::Value jvRequest, int& cost)
// Reuse the expanded as it would need to be calcuated anyway to produce the canonical. // Reuse the expanded as it would need to be calcuated anyway to produce the canonical.
// (At least unless we make a direct canonical.) // (At least unless we make a direct canonical.)
RippleCalc::setCanonical(spsCanonical, vpsExpanded, false); // RippleCalc::setCanonical(spsCanonical, vpsExpanded, false);
jvEntry["source_amount"] = saMaxAmountAct.getJson(0); jvEntry["source_amount"] = saMaxAmountAct.getJson(0);
// jvEntry["paths_expanded"] = vpsExpanded.getJson(0); // jvEntry["paths_expanded"] = vpsExpanded.getJson(0);

View File

@@ -559,6 +559,7 @@ void PathState::setCanonical(
const PathState& psExpanded const PathState& psExpanded
) )
{ {
assert(false);
saInAct = psExpanded.saInAct; saInAct = psExpanded.saInAct;
saOutAct = psExpanded.saOutAct; saOutAct = psExpanded.saOutAct;
@@ -572,7 +573,7 @@ void PathState::setCanonical(
unsigned int uEnd = psExpanded.vpnNodes.size(); // The node, indexed by 0, not to include. unsigned int uEnd = psExpanded.vpnNodes.size(); // The node, indexed by 0, not to include.
uint160 uDstAccountID = psExpanded.vpnNodes[uEnd].uAccountID; uint160 uDstAccountID = psExpanded.vpnNodes[uEnd].uAccountID; // FIXME: This can't be right
uint160 uAccountID = psExpanded.vpnNodes[0].uAccountID; uint160 uAccountID = psExpanded.vpnNodes[0].uAccountID;
uint160 uCurrencyID = uMaxCurrencyID; uint160 uCurrencyID = uMaxCurrencyID;