lightningd: move notification of disconnect into when we hear from connectd.

Simpler, and closes a potential race.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell 2022-03-23 06:56:30 +10:30
parent deecedb033
commit 77b1087cdf
3 changed files with 3 additions and 5 deletions

View file

@ -46,8 +46,6 @@ static void channel_disconnect(struct channel *channel,
log_(channel->log, level, NULL, false, "%s", desc);
channel_cleanup_commands(channel, desc);
notify_disconnect(channel->peer->ld, &channel->peer->id);
if (!reconnect)
channel_set_owner(channel, NULL);
else

View file

@ -110,7 +110,6 @@ void uncommitted_channel_disconnect(struct uncommitted_channel *uc,
subd_send_msg(uc->peer->ld->connectd, msg);
if (uc->fc && uc->fc->cmd)
was_pending(command_fail(uc->fc->cmd, LIGHTNINGD, "%s", desc));
notify_disconnect(uc->peer->ld, &uc->peer->id);
}

View file

@ -293,8 +293,6 @@ void channel_errmsg(struct channel *channel,
bool warning,
const u8 *err_for_them)
{
notify_disconnect(channel->peer->ld, &channel->peer->id);
/* Clean up any in-progress open attempts */
channel_cleanup_commands(channel, desc);
@ -1267,6 +1265,9 @@ void peer_disconnect_done(struct lightningd *ld, const u8 *msg)
if (p)
p->is_connected = false;
/* Fire off plugin notifications */
notify_disconnect(ld, &id);
/* Wake any disconnect commands (removes self from list) */
list_for_each_safe(&ld->disconnect_commands, i, next, list) {
if (!node_id_eq(&i->id, &id))