From: Ondrej Zajicek (work) Date: Tue, 13 Aug 2019 17:00:25 +0000 (+0200) Subject: Nest: Fix crash in route reload when some channels are not up. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f29478d9935551dd705f6d9149a710fc7ce8854d;p=thirdparty%2Fbird.git Nest: Fix crash in route reload when some channels are not up. Only channels that are up can be reloaded. --- diff --git a/nest/proto.c b/nest/proto.c index 3d55f57b9..de7cf850f 100644 --- a/nest/proto.c +++ b/nest/proto.c @@ -1888,7 +1888,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; @@ -1899,12 +1899,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); }