diff --git a/common/json.c b/common/json.c index 2dcd07fb2..17f96e50c 100644 --- a/common/json.c +++ b/common/json.c @@ -895,3 +895,13 @@ void json_add_errcode(struct json_stream *result, const char *fieldname, { json_add_member(result, fieldname, false, "%"PRIerrcode, code); } + +void json_add_invstring(struct json_stream *result, const char *invstring) +{ +#if EXPERIMENTAL_FEATURES + if (strstarts(invstring, "lni")) + json_add_string(result, "bolt12", invstring); + else +#endif + json_add_string(result, "bolt11", invstring); +} diff --git a/common/json.h b/common/json.h index c00e5829a..848c9fdc8 100644 --- a/common/json.h +++ b/common/json.h @@ -229,5 +229,7 @@ void json_add_tok(struct json_stream *result, const char *fieldname, void json_add_errcode(struct json_stream *result, const char *fieldname, errcode_t code); +/* Add "bolt11" or "bolt12" field, depending on invstring. */ +void json_add_invstring(struct json_stream *result, const char *invstring); #endif /* LIGHTNING_COMMON_JSON_H */ diff --git a/lightningd/invoice.c b/lightningd/invoice.c index df63e9d90..0c1d1f994 100644 --- a/lightningd/invoice.c +++ b/lightningd/invoice.c @@ -57,7 +57,7 @@ static void json_add_invoice(struct json_stream *response, const struct invoice_details *inv) { json_add_escaped_string(response, "label", inv->label); - json_add_string(response, "bolt11", inv->bolt11); + json_add_invstring(response, inv->invstring); json_add_sha256(response, "payment_hash", &inv->rhash); if (inv->msat) json_add_amount_msat_compat(response, *inv->msat, @@ -741,7 +741,7 @@ static void gossipd_incoming_channels_reply(struct subd *gossipd, response = json_stream_success(info->cmd); json_add_sha256(response, "payment_hash", &details->rhash); json_add_u64(response, "expires_at", details->expiry_time); - json_add_string(response, "bolt11", details->bolt11); + json_add_string(response, "bolt11", details->invstring); notify_invoice_creation(info->cmd->ld, info->b11->msat, info->payment_preimage, info->label); diff --git a/wallet/db_postgres_sqlgen.c b/wallet/db_postgres_sqlgen.c index 120434eac..2fcd3d5a8 100644 --- a/wallet/db_postgres_sqlgen.c +++ b/wallet/db_postgres_sqlgen.c @@ -1762,4 +1762,4 @@ struct db_query db_postgres_queries[] = { #endif /* LIGHTNINGD_WALLET_GEN_DB_POSTGRES */ -// SHA256STAMP:682d4f3ac081ef003be6eba257a5e5e023fee5169592c760c8878288ee12f212 +// SHA256STAMP:93d29f78f9f38cc779f4fbea480b90ce38899ff1c2f534e4160b2bf8a05b57ee diff --git a/wallet/db_sqlite3_sqlgen.c b/wallet/db_sqlite3_sqlgen.c index 83b083949..697c0d561 100644 --- a/wallet/db_sqlite3_sqlgen.c +++ b/wallet/db_sqlite3_sqlgen.c @@ -1762,4 +1762,4 @@ struct db_query db_sqlite3_queries[] = { #endif /* LIGHTNINGD_WALLET_GEN_DB_SQLITE3 */ -// SHA256STAMP:682d4f3ac081ef003be6eba257a5e5e023fee5169592c760c8878288ee12f212 +// SHA256STAMP:93d29f78f9f38cc779f4fbea480b90ce38899ff1c2f534e4160b2bf8a05b57ee diff --git a/wallet/invoices.c b/wallet/invoices.c index 9e9db1f50..e5e51ea68 100644 --- a/wallet/invoices.c +++ b/wallet/invoices.c @@ -107,8 +107,8 @@ static struct invoice_details *wallet_stmt2invoice_details(const tal_t *ctx, dtl->paid_timestamp = db_column_u64(stmt, 8); } - dtl->bolt11 = tal_strndup(dtl, db_column_blob(stmt, 9), - db_column_bytes(stmt, 9)); + dtl->invstring = tal_strndup(dtl, db_column_blob(stmt, 9), + db_column_bytes(stmt, 9)); if (!db_column_is_null(stmt, 10)) dtl->description = tal_strdup( diff --git a/wallet/statements_gettextgen.po b/wallet/statements_gettextgen.po index e673e2b45..d841d81c7 100644 --- a/wallet/statements_gettextgen.po +++ b/wallet/statements_gettextgen.po @@ -1161,4 +1161,4 @@ msgstr "" #: wallet/test/run-wallet.c:1378 msgid "INSERT INTO channels (id) VALUES (1);" msgstr "" -# SHA256STAMP:edc18cc0be69eb519707d9442372246c466d08ec7ed12f24584be19ae9032d9b +# SHA256STAMP:f567e217e4f94d8fd86c0c8d6997931d891df4f8295517fa527b80a323b256a8 diff --git a/wallet/wallet.h b/wallet/wallet.h index 0f80b55b3..0afe24c7e 100644 --- a/wallet/wallet.h +++ b/wallet/wallet.h @@ -722,8 +722,8 @@ struct invoice_details { struct amount_msat received; /* Set if state == PAID; time paid */ u64 paid_timestamp; - /* BOLT11 encoding for this invoice */ - const char *bolt11; + /* BOLT11 or BOLT12 encoding for this invoice */ + const char *invstring; /* The description of the payment. */ char *description;