Browse Source

lightningd: clean up close code now force is always true.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
travis-experimental
Rusty Russell 4 years ago
parent
commit
0dec593aa8
  1. 37
      lightningd/peer_control.c

37
lightningd/peer_control.c

@ -70,8 +70,6 @@ struct close_command {
struct command *cmd;
/* Channel being closed. */
struct channel *channel;
/* Should we force the close on timeout? */
bool force;
};
static void destroy_peer(struct peer *peer)
@ -283,18 +281,11 @@ destroy_close_command(struct close_command *cc)
static void
close_command_timeout(struct close_command *cc)
{
if (cc->force)
/* This will trigger drop_to_chain, which will trigger
* resolution of the command and destruction of the
* close_command. */
channel_fail_permanent(cc->channel,
"Forcibly closed by 'close' command timeout");
else
/* Fail the command directly, which will resolve the
* command and destroy the close_command. */
was_pending(command_fail(cc->cmd, LIGHTNINGD,
"Channel close negotiation not finished "
"before timeout"));
/* This will trigger drop_to_chain, which will trigger
* resolution of the command and destruction of the
* close_command. */
channel_fail_permanent(cc->channel,
"Forcibly closed by 'close' command timeout");
}
/* Construct a close command structure and add to ld. */
@ -302,8 +293,7 @@ static void
register_close_command(struct lightningd *ld,
struct command *cmd,
struct channel *channel,
unsigned int *timeout,
bool force)
unsigned int timeout)
{
struct close_command *cc;
assert(channel);
@ -312,15 +302,13 @@ register_close_command(struct lightningd *ld,
list_add_tail(&ld->close_commands, &cc->list);
cc->cmd = cmd;
cc->channel = channel;
cc->force = force;
tal_add_destructor(cc, &destroy_close_command);
tal_add_destructor2(channel,
&destroy_close_command_on_channel_destroy,
cc);
log_debug(ld->log, "close_command: force = %u, timeout = %i",
force, timeout ? *timeout : -1);
log_debug(ld->log, "close_command: timeout = %u", timeout);
if (timeout)
new_reltimer(ld->timers, cc, time_from_sec(*timeout),
new_reltimer(ld->timers, cc, time_from_sec(timeout),
&close_command_timeout, cc);
}
@ -1393,9 +1381,7 @@ static struct command_result *json_close(struct command *cmd,
const jsmntok_t *idtok;
struct peer *peer;
struct channel *channel COMPILER_WANTS_INIT("gcc 7.3.0 fails, 8.3 OK");
unsigned int *timeout = NULL;
bool force = true;
bool do_timeout;
unsigned int *timeout;
const u8 *close_to_script = NULL;
bool close_script_set;
const char *fee_negotiation_step_str;
@ -1411,8 +1397,6 @@ static struct command_result *json_close(struct command *cmd,
NULL))
return command_param_failed();
do_timeout = (*timeout != 0);
peer = peer_from_json(cmd->ld, buffer, idtok);
if (peer)
channel = peer_active_channel(peer);
@ -1539,8 +1523,7 @@ static struct command_result *json_close(struct command *cmd,
}
/* Register this command for later handling. */
register_close_command(cmd->ld, cmd, channel,
do_timeout ? timeout : NULL, force);
register_close_command(cmd->ld, cmd, channel, *timeout);
/* If we set `channel->shutdown_scriptpubkey[LOCAL]`, save it. */
if (close_script_set)

Loading…
Cancel
Save