mirror of
https://github.com/aljazceru/lightning.git
synced 2026-01-04 14:54:26 +01:00
paymod Collect the final failure when aggregating the tree results
We're lucky that we can distinguish the severity of the failure based on the failcode, so we bubble up the one with the maximum failcode, and let callers inspect details if they need more information.
This commit is contained in:
@@ -91,6 +91,9 @@ struct payment_tree_result payment_collect_result(struct payment *p)
|
||||
res.treestates = p->step;
|
||||
res.leafstates = 0;
|
||||
res.preimage = NULL;
|
||||
res.failure = NULL;
|
||||
if (p->step == PAYMENT_STEP_FAILED && p->result != NULL)
|
||||
res.failure = p->result;
|
||||
|
||||
if (numchildren == 0) {
|
||||
res.leafstates |= p->step;
|
||||
@@ -122,6 +125,14 @@ struct payment_tree_result payment_collect_result(struct payment *p)
|
||||
res.leafstates |= cres.leafstates;
|
||||
res.treestates |= cres.treestates;
|
||||
res.attempts += cres.attempts;
|
||||
|
||||
/* We bubble the failure result with the highest failcode up
|
||||
* to the root. */
|
||||
if (res.failure == NULL ||
|
||||
(cres.failure != NULL &&
|
||||
cres.failure->failcode > res.failure->failcode)) {
|
||||
res.failure = cres.failure;
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user