mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-19 07:04:22 +01:00
subd: clear transient billboard on start and shutdown.
Use NULL on the callback to mean "clear the slot", and call it. We have do this in two places: the old daemon might die, or the new daemon might start first. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
committed by
Christian Decker
parent
26b004e5af
commit
cca0a5412e
@@ -326,11 +326,13 @@ void channel_set_billboard(struct channel *channel, bool perm, const char *str)
|
||||
p = &channel->billboard.permanent[channel->state];
|
||||
else
|
||||
p = &channel->billboard.transient;
|
||||
tal_free(*p);
|
||||
*p = tal_free(*p);
|
||||
|
||||
*p = tal_fmt(channel, "%s:%s", channel_state_name(channel), str);
|
||||
if (taken(str))
|
||||
tal_free(str);
|
||||
if (str) {
|
||||
*p = tal_fmt(channel, "%s:%s", channel_state_name(channel), str);
|
||||
if (taken(str))
|
||||
tal_free(str);
|
||||
}
|
||||
}
|
||||
|
||||
void channel_fail_transient(struct channel *channel, const char *fmt, ...)
|
||||
|
||||
@@ -490,8 +490,9 @@ static void opening_channel_set_billboard(struct uncommitted_channel *uc,
|
||||
bool perm UNUSED,
|
||||
const char *happenings TAKES)
|
||||
{
|
||||
tal_free(uc->transient_billboard);
|
||||
uc->transient_billboard = tal_strdup(uc, happenings);
|
||||
uc->transient_billboard = tal_free(uc->transient_billboard);
|
||||
if (happenings)
|
||||
uc->transient_billboard = tal_strdup(uc, happenings);
|
||||
}
|
||||
|
||||
static void destroy_uncommitted_channel(struct uncommitted_channel *uc)
|
||||
|
||||
@@ -585,6 +585,8 @@ static void destroy_subd(struct subd *sd)
|
||||
struct db *db = sd->ld->wallet->db;
|
||||
bool outer_transaction;
|
||||
|
||||
/* Clear any transient messages in billboard */
|
||||
sd->billboardcb(channel, false, NULL);
|
||||
sd->channel = NULL;
|
||||
|
||||
/* We can be freed both inside msg handling, or spontaneously. */
|
||||
@@ -695,6 +697,9 @@ static struct subd *new_subd(struct lightningd *ld,
|
||||
|
||||
log_debug(sd->log, "pid %u, msgfd %i", sd->pid, msg_fd);
|
||||
|
||||
/* Clear any old transient message. */
|
||||
if (billboardcb)
|
||||
billboardcb(sd->channel, false, NULL);
|
||||
return sd;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user