Handle strand creation for erroneous self-payment

This commit is contained in:
seelabs
2017-05-09 18:14:42 -04:00
committed by Nik Bougalis
parent 5f37765292
commit 7dc2fe9ce7
3 changed files with 22 additions and 2 deletions

View File

@@ -147,7 +147,7 @@ RippleCalc::Output RippleCalc::rippleCalculate (
}
catch (std::exception& e)
{
JLOG (j.trace()) << "Exception from flow" << e.what ();
JLOG (j.error()) << "Exception from flow: " << e.what ();
if (!useFlowV1Output)
Rethrow();
}

View File

@@ -101,7 +101,7 @@ toStep (
if (e1->isOffer() && e2->isAccount())
{
// should already be taken care of
JLOG (j.warn())
JLOG (j.error())
<< "Found offer/account payment step. Aborting payment strand.";
assert (0);
if (ctx.view.rules().enabled(fix1373))
@@ -498,6 +498,9 @@ toStrandV2 (
}
}
if (normPath.size() < 2)
return {temBAD_PATH, Strand{}};
auto const strandSrc = normPath.front().getAccountID ();
auto const strandDst = normPath.back().getAccountID ();
bool const isDefaultPath = path.empty();

View File

@@ -1235,7 +1235,23 @@ struct Flow_test : public beast::unit_test::suite
sendmax (drops(20000000000)), txflags (tfPartialPayment));
}
void
testEmptyStrand(std::initializer_list<uint256> fs)
{
testcase("Empty Strand");
using namespace jtx;
auto const alice = Account("alice");
Env env(*this, features(fs));
env.fund(XRP(10000), alice);
env(pay(alice, alice,
alice["USD"](100)),
path(~alice["USD"]),
ter(temBAD_PATH));
}
void run() override
{
@@ -1269,6 +1285,7 @@ struct Flow_test : public beast::unit_test::suite
testWithFeats(featureFlow);
testWithFeats(featureFlow, fix1373);
testWithFeats(featureFlow, fix1373, featureFlowCross);
testEmptyStrand({featureFlow, fix1373, featureFlowCross});
}
};