mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-19 15:14:23 +01:00
paymod: Include excludes resulting from channel_hints for getrotue
This commit is contained in:
@@ -237,6 +237,28 @@ static struct command_result *payment_getroute_error(struct command *cmd,
|
|||||||
return command_still_pending(cmd);
|
return command_still_pending(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Iterate through the channel_hints and exclude any channel that we are
|
||||||
|
* confident will not be able to handle this payment. */
|
||||||
|
static void payment_getroute_add_excludes(struct payment *p,
|
||||||
|
struct json_stream *js)
|
||||||
|
{
|
||||||
|
struct payment *root = payment_root(p);
|
||||||
|
struct channel_hint *hint;
|
||||||
|
|
||||||
|
json_array_start(js, "exclude");
|
||||||
|
for (size_t i = 0; i < tal_count(root->channel_hints); i++) {
|
||||||
|
hint = &root->channel_hints[i];
|
||||||
|
|
||||||
|
if (!hint->enabled)
|
||||||
|
json_add_short_channel_id_dir(js, NULL, &hint->scid);
|
||||||
|
|
||||||
|
else if (amount_msat_greater_eq(p->amount,
|
||||||
|
hint->estimated_capacity))
|
||||||
|
json_add_short_channel_id_dir(js, NULL, &hint->scid);
|
||||||
|
}
|
||||||
|
json_array_end(js);
|
||||||
|
}
|
||||||
|
|
||||||
static void payment_getroute(struct payment *p)
|
static void payment_getroute(struct payment *p)
|
||||||
{
|
{
|
||||||
struct out_req *req;
|
struct out_req *req;
|
||||||
@@ -247,6 +269,7 @@ static void payment_getroute(struct payment *p)
|
|||||||
json_add_amount_msat_only(req->js, "msatoshi", p->amount);
|
json_add_amount_msat_only(req->js, "msatoshi", p->amount);
|
||||||
json_add_num(req->js, "riskfactor", 1);
|
json_add_num(req->js, "riskfactor", 1);
|
||||||
json_add_num(req->js, "cltv", p->getroute_cltv);
|
json_add_num(req->js, "cltv", p->getroute_cltv);
|
||||||
|
payment_getroute_add_excludes(p, req->js);
|
||||||
send_outreq(p->plugin, req);
|
send_outreq(p->plugin, req);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user