From a297a4f044bcc7c38549710a720bc1f97df9ba65 Mon Sep 17 00:00:00 2001 From: "Ondrej Zajicek (work)" Date: Tue, 13 Aug 2019 18:57:40 +0200 Subject: [PATCH] Nest: Fix crash in route reload when some channels are not up. Only channels that are up can be reloaded. --- nest/proto.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/nest/proto.c b/nest/proto.c index 54955bdd..6beca56d 100644 --- a/nest/proto.c +++ b/nest/proto.c @@ -1952,7 +1952,7 @@ proto_cmd_reload(struct proto *p, uintptr_t dir, int cnt UNUSED) /* All channels must support reload */ if (dir != CMD_RELOAD_OUT) WALK_LIST(c, p->channels) - if (!channel_reloadable(c)) + if ((c->channel_state == CS_UP) && !channel_reloadable(c)) { cli_msg(-8006, "%s: reload failed", p->name); return; @@ -1963,12 +1963,14 @@ proto_cmd_reload(struct proto *p, uintptr_t dir, int cnt UNUSED) /* re-importing routes */ if (dir != CMD_RELOAD_OUT) WALK_LIST(c, p->channels) - channel_request_reload(c); + if (c->channel_state == CS_UP) + channel_request_reload(c); /* re-exporting routes */ if (dir != CMD_RELOAD_IN) WALK_LIST(c, p->channels) - channel_request_feeding(c); + if (c->channel_state == CS_UP) + channel_request_feeding(c); cli_msg(-15, "%s: reloading", p->name); }