listpays mod 1: add destination inside the response when bolt11 is null
Changelog-Added: JSON-RPC: `listpays` now lists the `destination` if it was provided (e.g., via the `pay` plugin or `keysend` plugin)
This commit is contained in:
parent
700897f06e
commit
1521c29fcf
|
@ -3,7 +3,8 @@
|
|||
lightning-sendonion - Send a payment with a custom onion packet
|
||||
.SH SYNOPSIS
|
||||
|
||||
\fBsendonion\fR \fIonion\fR \fIfirst_hop\fR \fIpayment_hash\fR [\fIlabel\fR] [\fIshared_secrets\fR] [\fIpartid\fR] [\fIbolt11\fR] [\fImsatoshi\fR]
|
||||
\fBsendonion\fR \fIonion\fR \fIfirst_hop\fR \fIpayment_hash\fR [\fIlabel\fR] [\fIshared_secrets\fR] [\fIpartid\fR] [\fIbolt11\fR]
|
||||
[\fIdestination\fR] [\fImsatoshi\fR]
|
||||
|
||||
.SH DESCRIPTION
|
||||
|
||||
|
@ -90,6 +91,9 @@ The \fIbolt11\fR parameter, if provided, will be returned in
|
|||
\fIwaitsendpay\fR and \fIlistsendpays\fR results\.
|
||||
|
||||
|
||||
The \fIdestination\fR parameter, if provided, will be returned in \fBlistpays\fR result\.
|
||||
|
||||
|
||||
The \fImsatoshi\fR parameter is used to annotate the payment, and is returned by
|
||||
\fIwaitsendpay\fR and \fIlistsendpays\fR\.
|
||||
|
||||
|
|
|
@ -4,7 +4,8 @@ lightning-sendonion -- Send a payment with a custom onion packet
|
|||
SYNOPSIS
|
||||
--------
|
||||
|
||||
**sendonion** *onion* *first_hop* *payment_hash* \[*label*\] \[*shared_secrets*\] \[*partid*\] \[*bolt11*\] \[*msatoshi*\]
|
||||
**sendonion** *onion* *first_hop* *payment_hash* \[*label*\] \[*shared_secrets*\] \[*partid*\] \[*bolt11*\]
|
||||
\[*msatoshi*\] \[*destination*\]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
@ -78,6 +79,8 @@ partial payments with the same *payment_hash*.
|
|||
The *bolt11* parameter, if provided, will be returned in
|
||||
*waitsendpay* and *listsendpays* results.
|
||||
|
||||
The *destination* parameter, if provided, will be returned in **listpays** result.
|
||||
|
||||
The *msatoshi* parameter is used to annotate the payment, and is returned by
|
||||
*waitsendpay* and *listsendpays*.
|
||||
|
||||
|
|
|
@ -1178,6 +1178,7 @@ static struct command_result *json_sendonion(struct command *cmd,
|
|||
struct sha256 *payment_hash;
|
||||
struct lightningd *ld = cmd->ld;
|
||||
const char *label, *b11str;
|
||||
struct node_id *destination;
|
||||
struct secret *path_secrets;
|
||||
struct amount_msat *msat;
|
||||
u64 *partid;
|
||||
|
@ -1191,6 +1192,7 @@ static struct command_result *json_sendonion(struct command *cmd,
|
|||
p_opt_def("partid", param_u64, &partid, 0),
|
||||
p_opt("bolt11", param_string, &b11str),
|
||||
p_opt_def("msatoshi", param_msat, &msat, AMOUNT_MSAT(0)),
|
||||
p_opt("destination", param_node_id, &destination),
|
||||
NULL))
|
||||
return command_param_failed();
|
||||
|
||||
|
@ -1204,7 +1206,7 @@ static struct command_result *json_sendonion(struct command *cmd,
|
|||
|
||||
return send_payment_core(ld, cmd, payment_hash, *partid,
|
||||
first_hop, *msat, AMOUNT_MSAT(0),
|
||||
label, b11str, &packet, NULL, NULL, NULL,
|
||||
label, b11str, &packet, destination, NULL, NULL,
|
||||
path_secrets);
|
||||
}
|
||||
|
||||
|
|
|
@ -1041,6 +1041,9 @@ static struct command_result *payment_createonion_success(struct command *cmd,
|
|||
if (p->bolt11)
|
||||
json_add_string(req->js, "bolt11", p->bolt11);
|
||||
|
||||
if (p->destination)
|
||||
json_add_node_id(req->js, "destination", p->destination);
|
||||
|
||||
send_outreq(p->plugin, req);
|
||||
return command_still_pending(cmd);
|
||||
}
|
||||
|
|
|
@ -1669,6 +1669,9 @@ struct pay_mpp {
|
|||
|
||||
/* Timestamp of the first part */
|
||||
u32 timestamp;
|
||||
|
||||
/* The destination of the payment, if specified. */
|
||||
struct node_id *destination;
|
||||
};
|
||||
|
||||
static const struct sha256 *pay_mpp_key(const struct pay_mpp *pm)
|
||||
|
@ -1739,6 +1742,9 @@ static void add_new_entry(struct json_stream *ret,
|
|||
if (pm->b11)
|
||||
json_add_string(ret, "bolt11", pm->b11);
|
||||
|
||||
if (pm->destination)
|
||||
json_add_node_id(ret, "destination", pm->destination);
|
||||
|
||||
json_add_sha256(ret, "payment_hash", pm->payment_hash);
|
||||
json_add_string(ret, "status", pm->status);
|
||||
json_add_u32(ret, "created_at", pm->timestamp);
|
||||
|
@ -1785,13 +1791,15 @@ static struct command_result *listsendpays_done(struct command *cmd,
|
|||
ret = jsonrpc_stream_success(cmd);
|
||||
json_array_start(ret, "pays");
|
||||
json_for_each_arr(i, t, arr) {
|
||||
const jsmntok_t *status, *b11tok, *hashtok, *createdtok;
|
||||
const jsmntok_t *status, *b11tok, *hashtok, *destinationtok, *createdtok;
|
||||
const char *b11 = b11str;
|
||||
struct sha256 payment_hash;
|
||||
struct node_id destination;
|
||||
u32 created_at;
|
||||
|
||||
b11tok = json_get_member(buf, t, "bolt11");
|
||||
hashtok = json_get_member(buf, t, "payment_hash");
|
||||
destinationtok = json_get_member(buf, t, "destination");
|
||||
createdtok = json_get_member(buf, t, "created_at");
|
||||
assert(hashtok != NULL);
|
||||
assert(createdtok != NULL);
|
||||
|
@ -1801,11 +1809,15 @@ static struct command_result *listsendpays_done(struct command *cmd,
|
|||
if (b11tok)
|
||||
b11 = json_strdup(cmd, buf, b11tok);
|
||||
|
||||
if (destinationtok)
|
||||
json_to_node_id(buf, destinationtok, &destination);
|
||||
|
||||
pm = pay_map_get(&pay_map, &payment_hash);
|
||||
if (!pm) {
|
||||
pm = tal(cmd, struct pay_mpp);
|
||||
pm->payment_hash = tal_dup(pm, struct sha256, &payment_hash);
|
||||
pm->b11 = tal_steal(pm, b11);
|
||||
pm->destination = tal_dup(pm,struct node_id, &destination);
|
||||
pm->label = json_get_member(buf, t, "label");
|
||||
pm->preimage = NULL;
|
||||
pm->amount_sent = AMOUNT_MSAT(0);
|
||||
|
@ -1875,6 +1887,7 @@ static struct command_result *json_listpays(struct command *cmd,
|
|||
|
||||
if (payment_hash)
|
||||
json_add_sha256(req->js, "payment_hash", payment_hash);
|
||||
|
||||
return send_outreq(cmd->plugin, req);
|
||||
}
|
||||
|
||||
|
|
|
@ -3261,6 +3261,8 @@ def test_listpay_result_with_paymod(node_factory, bitcoind):
|
|||
l2.rpc.keysend(l3.info['id'], amount_sat * 2, "keysend_l3")
|
||||
|
||||
assert 'bolt11' in l1.rpc.listpays()['pays'][0]
|
||||
assert 'bolt11' not in l2.rpc.listpays()['pays'][0]
|
||||
assert 'payment_hash' in l2.rpc.listpays()['pays'][0]
|
||||
assert 'payment_hash' in l1.rpc.listpays()['pays'][0]
|
||||
assert 'bolt11' not in l2.rpc.listpays()['pays'][0]
|
||||
assert 'destination' in l1.rpc.listpays()['pays'][0]
|
||||
assert 'destination' in l2.rpc.listpays()['pays'][0]
|
||||
|
|
Loading…
Reference in New Issue