mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-11-17 08:38:42 +00:00
Nest: Fix bitmap cleanup
Channel currently does not have independent pool and uses protocol pool, which is freed when protocol changes state to down, while channel is still in flushing. Move some some cleanup code to channel_do_flush() so it is done before freeing of protocol pool.
This commit is contained in:
parent
ff2ca10cba
commit
4ab54f1aef
@ -397,6 +397,12 @@ channel_do_flush(struct channel *c)
|
|||||||
channel_graceful_restart_unlock(c);
|
channel_graceful_restart_unlock(c);
|
||||||
|
|
||||||
CALL(c->channel->shutdown, c);
|
CALL(c->channel->shutdown, c);
|
||||||
|
|
||||||
|
/* This have to be done in here, as channel pool is freed before channel_do_down() */
|
||||||
|
bmap_free(&c->export_map);
|
||||||
|
c->in_table = NULL;
|
||||||
|
c->reload_event = NULL;
|
||||||
|
c->out_table = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -411,7 +417,7 @@ channel_do_down(struct channel *c)
|
|||||||
if ((c->stats.imp_routes + c->stats.filt_routes) != 0)
|
if ((c->stats.imp_routes + c->stats.filt_routes) != 0)
|
||||||
log(L_ERR "%s: Channel %s is down but still has some routes", c->proto->name, c->name);
|
log(L_ERR "%s: Channel %s is down but still has some routes", c->proto->name, c->name);
|
||||||
|
|
||||||
bmap_free(&c->export_map);
|
// bmap_free(&c->export_map);
|
||||||
memset(&c->stats, 0, sizeof(struct proto_stats));
|
memset(&c->stats, 0, sizeof(struct proto_stats));
|
||||||
|
|
||||||
c->in_table = NULL;
|
c->in_table = NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user