add autogenerated fallbacks (not custom fallbacks) to invoice_fallbacks table
This commit is contained in:
parent
cdc0bd47ff
commit
e3e0abc73b
|
@ -695,6 +695,7 @@ struct invoice_info {
|
|||
struct bolt11 *b11;
|
||||
struct json_escape *label;
|
||||
struct chanhints *chanhints;
|
||||
bool custom_fallbacks;
|
||||
};
|
||||
|
||||
/* Add routehints based on listincoming results: NULL means success. */
|
||||
|
@ -879,6 +880,13 @@ invoice_complete(struct invoice_info *info,
|
|||
info->label->s);
|
||||
}
|
||||
|
||||
if (info->cmd->ld->unified_invoices && info->b11->fallbacks && !info->custom_fallbacks) {
|
||||
for (size_t i = 0; i < tal_count(info->b11->fallbacks); i++) {
|
||||
const u8 *fallback_script = info->b11->fallbacks[i];
|
||||
invoices_create_fallback(wallet->invoices, inv_dbid, fallback_script);
|
||||
}
|
||||
}
|
||||
|
||||
/* Get details */
|
||||
details = invoices_get_details(info, wallet->invoices, inv_dbid);
|
||||
|
||||
|
@ -915,6 +923,10 @@ invoice_complete(struct invoice_info *info,
|
|||
json_add_string(response, "warning_private_unused",
|
||||
"Insufficient incoming capacity, once private channels were excluded (try exposeprivatechannels=true?)");
|
||||
|
||||
if (info->cmd->ld->unified_invoices && info->custom_fallbacks)
|
||||
json_add_string(response, "warning_custom_fallbacks",
|
||||
"WARNING: Not tracking on-chain payments for custom fallback addresses");
|
||||
|
||||
return command_success(info->cmd, response);
|
||||
}
|
||||
|
||||
|
@ -1160,7 +1172,9 @@ static struct command_result *json_invoice(struct command *cmd,
|
|||
if (command_check_only(cmd))
|
||||
return command_check_done(cmd);
|
||||
|
||||
info->custom_fallbacks = false;
|
||||
if (fallbacks) {
|
||||
info->custom_fallbacks = true;
|
||||
if (cmd->ld->unified_invoices) {
|
||||
log_info(cmd->ld->log,
|
||||
"WARNING: Not tracking on-chain payments "
|
||||
|
|
|
@ -386,6 +386,11 @@ bool invoices_create(struct invoices *invoices UNNEEDED,
|
|||
const struct sha256 *rhash UNNEEDED,
|
||||
const struct sha256 *local_offer_id UNNEEDED)
|
||||
{ fprintf(stderr, "invoices_create called!\n"); abort(); }
|
||||
/* Generated stub for invoices_create_fallback */
|
||||
void invoices_create_fallback(struct invoices *invoices UNNEEDED,
|
||||
u64 inv_dbid UNNEEDED,
|
||||
const u8 *scriptPubkey UNNEEDED)
|
||||
{ fprintf(stderr, "invoices_create_fallback called!\n"); abort(); }
|
||||
/* Generated stub for invoices_delete */
|
||||
bool invoices_delete(struct invoices *invoices UNNEEDED,
|
||||
u64 inv_dbid UNNEEDED,
|
||||
|
|
|
@ -371,6 +371,26 @@ bool invoices_find_by_rhash(struct invoices *invoices,
|
|||
}
|
||||
}
|
||||
|
||||
void invoices_create_fallback(struct invoices *invoices,
|
||||
u64 inv_dbid,
|
||||
const u8 *scriptPubkey)
|
||||
{
|
||||
struct db_stmt *stmt;
|
||||
|
||||
/* Save to database. */
|
||||
stmt = db_prepare_v2(
|
||||
invoices->wallet->db,
|
||||
SQL("INSERT INTO invoice_fallbacks"
|
||||
" ( invoice_id, scriptpubkey )"
|
||||
" VALUES ( ?, ?);"));
|
||||
|
||||
db_bind_u64(stmt, inv_dbid);
|
||||
db_bind_blob(stmt, scriptPubkey,
|
||||
tal_bytelen(scriptPubkey));
|
||||
db_exec_prepared_v2(stmt);
|
||||
tal_free(stmt);
|
||||
}
|
||||
|
||||
bool invoices_find_by_fallback_script(struct invoices *invoices,
|
||||
u64 *inv_dbid,
|
||||
const u8 *scriptPubkey)
|
||||
|
|
|
@ -89,6 +89,17 @@ bool invoices_find_by_label(struct invoices *invoices,
|
|||
bool invoices_find_by_rhash(struct invoices *invoices,
|
||||
u64 *inv_dbid,
|
||||
const struct sha256 *rhash);
|
||||
/**
|
||||
* invoices_create_fallback - Add scriptpubkey into invoice_fallbacks for this inv
|
||||
*
|
||||
* @param invoices - the invoice handler.
|
||||
* @param inv_dbid - invoice id
|
||||
* @param scriptPubKey - the fallback scriptpubkey associated with
|
||||
* the above invoice id
|
||||
*/
|
||||
void invoices_create_fallback(struct invoices *invoices,
|
||||
u64 inv_dbid,
|
||||
const u8 *scriptPubkey);
|
||||
/**
|
||||
* invoices_find_by_fallback_script - Search for an invoice by
|
||||
* scriptpubkey in invoice_fallbacks child table
|
||||
|
|
Loading…
Reference in New Issue