lightningd: add --dev-allow-shutdown-destination-change to unstick existing nodes.

This will solve the problem for users who already hit the bug fixed by
the previous patch!

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell 2024-02-14 20:08:36 +10:30 committed by Christian Decker
parent eb6e6bd373
commit 4c5c53cac7
4 changed files with 10 additions and 1 deletions

View File

@ -692,7 +692,8 @@ static struct command_result *json_close(struct command *cmd,
if (close_to_script) {
bool is_p2sh;
if (!tal_arr_eq(close_to_script, channel->shutdown_scriptpubkey[LOCAL])) {
if (!tal_arr_eq(close_to_script, channel->shutdown_scriptpubkey[LOCAL])
&& !cmd->ld->dev_allow_shutdown_destination_change) {
const u8 *defp2tr, *defp2wpkh;
/* We cannot change the closing script once we've
* started shutdown: onchaind relies on it for output

View File

@ -146,6 +146,7 @@ static struct lightningd *new_lightningd(const tal_t *ctx)
ld->dev_disable_commit = -1;
ld->dev_no_ping_timer = false;
ld->dev_any_channel_type = false;
ld->dev_allow_shutdown_destination_change = false;
/*~ This is a CCAN list: an embedded double-linked list. It's not
* really typesafe, but relies on convention to access the contents.

View File

@ -346,6 +346,9 @@ struct lightningd {
/* Tell openingd/dualopend to accept all, allow sending any. */
bool dev_any_channel_type;
/* Allow changing of shutdown output point even if dangerous */
bool dev_allow_shutdown_destination_change;
/* tor support */
struct wireaddr *proxyaddr;
bool always_use_proxy;

View File

@ -911,6 +911,10 @@ static void dev_register_opts(struct lightningd *ld)
opt_set_bool,
&ld->dev_any_channel_type,
"Allow sending any channel type, and accept any");
clnopt_noarg("--dev-allow-shutdown-destination-change", OPT_DEV,
opt_set_bool,
&ld->dev_allow_shutdown_destination_change,
"Allow destination override on close, even if risky");
}
static const struct config testnet_config = {