Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
7a51bf7
update-mocks: make handling of mocks in nested files deterministic.
rustyrussell May 8, 2026
b4ea05e
common: implement tal_arr_append and tal_arr_appendn, and use them.
rustyrussell May 8, 2026
a31e918
CCAN: update to get json_escape_dup helper.
rustyrussell May 8, 2026
63adbc8
askrene: all remove_small_channel_layer when maxparts=1.
rustyrussell May 8, 2026
23932b9
askrene: improve errors we return.
rustyrussell May 8, 2026
5680ab2
askrene: make failure messages clearer:
rustyrussell May 8, 2026
d5c70b3
pytest: use maxparts=1 not the soon-to-be-deprecated "auto.no_mpp_sup…
rustyrussell May 8, 2026
4faf7e0
askrene: deprecate `auto.no_mpp_support` layer in favor of `maxparts=1`.
rustyrussell May 8, 2026
cc2bc29
xpay: remove internal "disable_mpp" flag.
rustyrussell May 8, 2026
f55c7ea
xpay: extract payment creation logic.
rustyrussell May 8, 2026
f262bef
xpay: add extra_tlvs support (unused for now).
rustyrussell May 8, 2026
066a905
injectpaymentonion: add explicit `destination` option.
rustyrussell May 8, 2026
02d6a8d
xpay: add `label` and `localinvreqid` params
rustyrussell May 8, 2026
cb872c4
xpay: handle localinvreqid and label parameters when we're called as …
rustyrussell May 8, 2026
164888c
xpay: process channel_update from error for the current payment.
rustyrussell May 8, 2026
b80dab0
xpay: add a CLTV shadow for single non-blinded paths.
rustyrussell May 8, 2026
bae9160
xpay: return the correct (documented!) error code on repeat payments.
rustyrussell May 8, 2026
161f263
xpay: correctly identify final node when using a dummy blinded path.
rustyrussell May 8, 2026
4422366
xpay: when acting as pay, imitate its idempotent behavior.
rustyrussell May 8, 2026
e258109
xpay: ensure unique_id is always valid.
rustyrussell May 8, 2026
6d22a13
askrene: populate `struct route` with more complete information.
rustyrussell May 8, 2026
5e8bb76
getroutes: return more detailed fields in routes[].
rustyrussell May 8, 2026
9dea8e8
getroutes: deprecate old vaguely named fields.
rustyrussell May 8, 2026
a2d2d0b
sendpay: ignore unknown `route` fields, but take the `getroutes`-styl…
rustyrussell May 8, 2026
86bb8fe
pyln: add getroutes wrapper to pyln-client, add single_route helper t…
rustyrussell May 8, 2026
7923b60
tests: use getroutes, not getroute (simple cases)
rustyrussell May 8, 2026
a771737
pytest: convert remaining getroute cases.
rustyrussell May 8, 2026
8339fd6
xpay: add xkeysend support.
rustyrussell May 8, 2026
81e9807
pytest: speed up test_keysend_description_size_limit
rustyrussell May 8, 2026
987dd81
pytest: test xkeysend as thoroughly as keysend.
rustyrussell May 8, 2026
ffc9670
offers: use xpay.
rustyrussell May 8, 2026
928c6dc
pytest: make pay tests more robust.
rustyrussell May 8, 2026
243a463
pyln-testing: allow bitcoind mocks to return None to mean "don't mock".
rustyrussell May 8, 2026
52cc2a7
pytest: use xpay, not pay in misc tests.
rustyrussell May 8, 2026
d99793d
xpay: take over pay invocations by default.
rustyrussell May 8, 2026
689fc62
pay: accept invstring as first parameter name.
rustyrussell May 8, 2026
3cfe7ce
pay: deprecate pay and paystatus.
rustyrussell May 8, 2026
341d405
getroute: deprecate in favor of `getroutes`
rustyrussell May 8, 2026
d915853
keysend: deprecate in favor of `xkeysend`.
rustyrussell May 8, 2026
5defa89
xpay: keep track of ongoing payments, to implement attempt_ongoing()
rustyrussell May 8, 2026
4380775
plugins: move listpays from pay plugin to xpay plugin.
rustyrussell May 8, 2026
c2492c2
renepay: deprecate.
rustyrussell May 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 72 additions & 2 deletions .msggen.json
Original file line number Diff line number Diff line change
Expand Up @@ -2157,10 +2157,16 @@
"GetRoutes.routes[].probability_ppm": 1
},
"GetroutesRoutesPath": {
"GetRoutes.routes[].path[].amount_in_msat": 7,
"GetRoutes.routes[].path[].amount_msat": 3,
"GetRoutes.routes[].path[].amount_out_msat": 8,
"GetRoutes.routes[].path[].cltv_in": 11,
"GetRoutes.routes[].path[].cltv_out": 12,
"GetRoutes.routes[].path[].delay": 5,
"GetRoutes.routes[].path[].direction": 2,
"GetRoutes.routes[].path[].next_node_id": 4,
"GetRoutes.routes[].path[].node_id_in": 9,
"GetRoutes.routes[].path[].node_id_out": 10,
"GetRoutes.routes[].path[].short_channel_id": 1,
"GetRoutes.routes[].path[].short_channel_id_dir": 6
},
Expand All @@ -2184,6 +2190,7 @@
"InjectpaymentonionRequest": {
"InjectPaymentOnion.amount_msat": 3,
"InjectPaymentOnion.cltv_expiry": 4,
"InjectPaymentOnion.destination": 11,
"InjectPaymentOnion.destination_msat": 10,
"InjectPaymentOnion.groupid": 6,
"InjectPaymentOnion.invstring": 8,
Expand Down Expand Up @@ -3990,10 +3997,14 @@
},
"SendpayRoute": {
"SendPay.route[].amount_msat": 5,
"SendPay.route[].amount_out_msat": 8,
"SendPay.route[].channel": 4,
"SendPay.route[].cltv_out": 9,
"SendPay.route[].delay": 3,
"SendPay.route[].id": 2,
"SendPay.route[].msatoshi": 1
"SendPay.route[].msatoshi": 1,
"SendPay.route[].node_id_out": 7,
"SendPay.route[].short_channel_id_dir": 6
},
"SendpsbtRequest": {
"SendPsbt.psbt": 1,
Expand Down Expand Up @@ -4422,8 +4433,11 @@
},
"XpayRequest": {
"Xpay.amount_msat": 2,
"Xpay.dev_use_shadow": 11,
"Xpay.invstring": 1,
"Xpay.label": 9,
"Xpay.layers[]": 4,
"Xpay.localinvreqid": 10,
"Xpay.maxdelay": 7,
"Xpay.maxfee": 3,
"Xpay.partial_msat": 6,
Expand Down Expand Up @@ -8455,20 +8469,44 @@
"added": "v24.08",
"deprecated": null
},
"GetRoutes.routes[].path[].amount_in_msat": {
"added": "v26.06",
"deprecated": null
},
"GetRoutes.routes[].path[].amount_msat": {
"added": "v24.08",
"deprecated": "v26.06"
},
"GetRoutes.routes[].path[].amount_out_msat": {
"added": "v26.06",
"deprecated": null
},
"GetRoutes.routes[].path[].cltv_in": {
"added": "v26.06",
"deprecated": null
},
"GetRoutes.routes[].path[].cltv_out": {
"added": "v26.06",
"deprecated": null
},
"GetRoutes.routes[].path[].delay": {
"added": "v24.08",
"deprecated": null
"deprecated": "v26.06"
},
"GetRoutes.routes[].path[].direction": {
"added": "v24.08",
"deprecated": null
},
"GetRoutes.routes[].path[].next_node_id": {
"added": "v24.08",
"deprecated": "v26.06"
},
"GetRoutes.routes[].path[].node_id_in": {
"added": "v26.06",
"deprecated": null
},
"GetRoutes.routes[].path[].node_id_out": {
"added": "v26.06",
"deprecated": null
},
"GetRoutes.routes[].path[].short_channel_id": {
Expand Down Expand Up @@ -8675,6 +8713,10 @@
"added": "v24.11",
"deprecated": null
},
"InjectPaymentOnion.destination": {
"added": "v26.06",
"deprecated": null
},
"InjectPaymentOnion.destination_msat": {
"added": "v24.11.1",
"deprecated": null
Expand Down Expand Up @@ -13483,10 +13525,18 @@
"added": "pre-v0.10.1",
"deprecated": null
},
"SendPay.route[].amount_out_msat": {
"added": "v26.06",
"deprecated": null
},
"SendPay.route[].channel": {
"added": "pre-v0.10.1",
"deprecated": null
},
"SendPay.route[].cltv_out": {
"added": "v26.06",
"deprecated": null
},
"SendPay.route[].delay": {
"added": "pre-v0.10.1",
"deprecated": null
Expand All @@ -13495,6 +13545,14 @@
"added": "pre-v0.10.1",
"deprecated": null
},
"SendPay.route[].node_id_out": {
"added": "v26.06",
"deprecated": null
},
"SendPay.route[].short_channel_id_dir": {
"added": "v26.06",
"deprecated": null
},
"SendPay.status": {
"added": "pre-v0.10.1",
"deprecated": null
Expand Down Expand Up @@ -14675,6 +14733,10 @@
"added": "v24.11",
"deprecated": null
},
"Xpay.dev_use_shadow": {
"added": "v26.06",
"deprecated": null
},
"Xpay.failed_parts": {
"added": "v24.11",
"deprecated": null
Expand All @@ -14683,10 +14745,18 @@
"added": "v24.11",
"deprecated": null
},
"Xpay.label": {
"added": "v24.11",
"deprecated": null
},
"Xpay.layers[]": {
"added": "v24.11",
"deprecated": null
},
"Xpay.localinvreqid": {
"added": "v24.11",
"deprecated": null
},
"Xpay.maxdelay": {
"added": "v25.02",
"deprecated": null
Expand Down
4 changes: 1 addition & 3 deletions bitcoin/psbt.c
Original file line number Diff line number Diff line change
Expand Up @@ -673,9 +673,7 @@ size_t psbt_output_get_weight(const struct wally_psbt *psbt,

static void add(u8 **key, const void *mem, size_t len)
{
size_t oldlen = tal_count(*key);
tal_resize(key, oldlen + len);
memcpy(*key + oldlen, memcheck(mem, len), len);
tal_arr_appendn(key, mem, len);
}

static void add_type(u8 **key, const u8 num)
Expand Down
4 changes: 1 addition & 3 deletions bitcoin/script.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,7 @@ static void hash160(struct ripemd160 *redeemhash, const void *mem, size_t len)

static void add(u8 **scriptp, const void *mem, size_t len)
{
size_t oldlen = tal_count(*scriptp);
tal_resize(scriptp, oldlen + len);
memcpy(*scriptp + oldlen, mem, len);
tal_arr_appendn(scriptp, mem, len);
}

static void add_op(u8 **scriptp, u8 op)
Expand Down
2 changes: 1 addition & 1 deletion ccan/README
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
CCAN imported from http://ccodearchive.net.

CCAN version: init-2611-g050dc66d
CCAN version: init-2612-ge242779f
8 changes: 8 additions & 0 deletions ccan/ccan/json_escape/json_escape.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,14 @@ bool json_escape_eq(const struct json_escape *a, const struct json_escape *b)
return streq(a->s, b->s);
}

struct json_escape *json_escape_dup(const tal_t *ctx, const struct json_escape *esc TAKES)
{
if (taken(esc))
return (struct json_escape *)tal_steal(ctx, esc);

return json_escape_string_(ctx, esc->s, strlen(esc->s));
}

bool json_escape_needed(const char *str, size_t len)
{
size_t i;
Expand Down
3 changes: 3 additions & 0 deletions ccan/ccan/json_escape/json_escape.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ struct json_escape *json_escape_len(const tal_t *ctx,
struct json_escape *json_partial_escape(const tal_t *ctx,
const char *str TAKES);

/* Copy a json_escape */
struct json_escape *json_escape_dup(const tal_t *ctx, const struct json_escape *esc TAKES);

/* Do we need to escape this str? */
bool json_escape_needed(const char *str, size_t len);

Expand Down
4 changes: 3 additions & 1 deletion ccan/ccan/json_escape/test/run.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ int main(void)
struct json_escape *e;

/* This is how many tests you plan to run */
plan_tests(6);
plan_tests(8);

e = json_escape(ctx, "Hello");
ok1(!strcmp(e->s, "Hello"));
Expand All @@ -25,6 +25,7 @@ int main(void)
ok1(!strcmp(json_escape_unescape(ctx, e),
"\\\b\f\n\r\t\""
"\\\\\\b\\f\\n\\r\\t\\\""));
ok1(json_escape_eq(e, json_escape_dup(ctx, e)));

/* This one doesn't escape the already-escaped chars */
e = json_partial_escape(ctx,
Expand All @@ -36,6 +37,7 @@ int main(void)
ok1(!strcmp(json_escape_unescape(ctx, e),
"\\\b\f\n\r\t\""
"\\\b\f\n\r\t\""));
ok1(json_escape_eq(e, json_escape_dup(ctx, e)));

tal_free(ctx);

Expand Down
28 changes: 21 additions & 7 deletions cln-grpc/proto/node.proto

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading