mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-23 00:54:20 +01:00
delinvoice: routine to remove an unpaid invoice.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
@@ -165,3 +165,51 @@ const struct json_command listinvoice_command = {
|
||||
"Returns an array of {label}, {rhash}, {msatoshi} and {complete} on success. "
|
||||
};
|
||||
|
||||
static void json_delinvoice(struct command *cmd,
|
||||
const char *buffer, const jsmntok_t *params)
|
||||
{
|
||||
struct invoice *i;
|
||||
jsmntok_t *labeltok;
|
||||
struct json_result *response = new_json_result(cmd);
|
||||
const char *label;
|
||||
|
||||
if (!json_get_params(buffer, params,
|
||||
"label", &labeltok,
|
||||
NULL)) {
|
||||
command_fail(cmd, "Invalid arguments");
|
||||
return;
|
||||
}
|
||||
|
||||
label = tal_strndup(cmd, buffer + labeltok->start,
|
||||
labeltok->end - labeltok->start);
|
||||
i = find_invoice_by_label(cmd->dstate, label);
|
||||
if (!i) {
|
||||
command_fail(cmd, "Unknown invoice");
|
||||
return;
|
||||
}
|
||||
if (i->complete) {
|
||||
command_fail(cmd, "Invoice already paid");
|
||||
return;
|
||||
}
|
||||
if (!db_remove_invoice(cmd->dstate, i->label)) {
|
||||
command_fail(cmd, "Database error");
|
||||
return;
|
||||
}
|
||||
list_del_from(&cmd->dstate->invoices, &i->list);
|
||||
|
||||
json_object_start(response, NULL);
|
||||
json_add_string(response, "label", i->label);
|
||||
json_add_hex(response, "rhash", &i->rhash, sizeof(i->rhash));
|
||||
json_add_u64(response, "msatoshi", i->msatoshi);
|
||||
json_object_end(response);
|
||||
command_success(cmd, response);
|
||||
tal_free(i);
|
||||
}
|
||||
|
||||
const struct json_command delinvoice_command = {
|
||||
"delinvoice",
|
||||
json_delinvoice,
|
||||
"Delete unpaid invoice {label}))",
|
||||
"Returns {label}, {rhash} and {msatoshi} on success. "
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user