From 2d05644dfd24ee510e23953fbd0e2b560364ef28 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Tue, 21 Nov 2017 16:56:15 +1030 Subject: [PATCH] json_invoice: add optional expiry argument. This just includes it in the bolt11 return for the moment. Signed-off-by: Rusty Russell --- lightningd/invoice.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lightningd/invoice.c b/lightningd/invoice.c index 3ab17f85d..1c96f7de4 100644 --- a/lightningd/invoice.c +++ b/lightningd/invoice.c @@ -100,17 +100,19 @@ static void json_invoice(struct command *cmd, const char *buffer, const jsmntok_t *params) { struct invoice *invoice; - jsmntok_t *msatoshi, *label, *desc; + jsmntok_t *msatoshi, *label, *desc, *exp; struct json_result *response = new_json_result(cmd); struct invoices *invs = cmd->ld->invoices; struct bolt11 *b11; char *b11enc; struct wallet_payment payment; + u64 expiry = 3600; if (!json_get_params(buffer, params, "amount", &msatoshi, "label", &label, "description", &desc, + "?expiry", &exp, NULL)) { command_fail(cmd, "Need {amount}, {label} and {description}"); return; @@ -143,6 +145,13 @@ static void json_invoice(struct command *cmd, return; } + if (exp && !json_tok_u64(buffer, exp, &expiry)) { + command_fail(cmd, "expiry '%.*s' invalid seconds", + exp->end - exp->start, + buffer + exp->start); + return; + } + wallet_invoice_save(cmd->ld->wallet, invoice); /* Construct bolt11 string. */ @@ -152,6 +161,7 @@ static void json_invoice(struct command *cmd, b11->payment_hash = invoice->rhash; b11->receiver_id = cmd->ld->id; b11->min_final_cltv_expiry = cmd->ld->config.cltv_final; + b11->expiry = expiry; if (desc->end - desc->start >= BOLT11_FIELD_BYTE_LIMIT) { b11->description_hash = tal(b11, struct sha256); sha256(b11->description_hash, buffer + desc->start, @@ -159,7 +169,6 @@ static void json_invoice(struct command *cmd, } else b11->description = tal_strndup(b11, buffer + desc->start, desc->end - desc->start); - /* FIXME: add option to set expiry */ /* FIXME: add private routes if necessary! */ b11enc = bolt11_encode(cmd, cmd->ld, b11, false); @@ -196,7 +205,7 @@ static void json_invoice(struct command *cmd, static const struct json_command invoice_command = { "invoice", json_invoice, - "Create invoice for {msatoshi} with {label} and {description}", + "Create invoice for {msatoshi} with {label} and {description} with optional {expiry} seconds (default 1 hour)", "Returns the {rhash} and {bolt11} on success, and {description} if too alrge for {bolt11}. " }; AUTODATA(json_command, &invoice_command);