diff --git a/nest/proto.c b/nest/proto.c index 978582ca..7a09ed64 100644 --- a/nest/proto.c +++ b/nest/proto.c @@ -596,6 +596,9 @@ channel_export_stopped(struct rt_export_request *req) mb_free(c->out_req.name); c->out_req.name = NULL; + bmap_free(&c->export_map); + bmap_free(&c->export_reject_map); + if (c->restart_export) { c->restart_export = 0; @@ -993,9 +996,6 @@ channel_do_pause(struct channel *c) } channel_roa_unsubscribe_all(c); - - bmap_free(&c->export_map); - bmap_free(&c->export_reject_map); } static void @@ -1035,16 +1035,11 @@ channel_do_down(struct channel *c) c->proto->active_channels--; - // bmap_free(&c->export_map); memset(&c->import_stats, 0, sizeof(struct channel_import_stats)); memset(&c->export_stats, 0, sizeof(struct channel_export_stats)); CALL(c->channel->cleanup, c); - /* This have to be done in here, as channel pool is freed before channel_do_down() */ - bmap_free(&c->export_map); - bmap_free(&c->export_reject_map); - /* Schedule protocol shutddown */ if (proto_is_done(c->proto)) proto_send_event(c->proto); diff --git a/nest/rt-table.c b/nest/rt-table.c index d09abbef..c53fd195 100644 --- a/nest/rt-table.c +++ b/nest/rt-table.c @@ -507,7 +507,7 @@ export_filter_(struct channel *c, rte *rt, linpool *pool, int silent) stats->updates_rejected++; if (v == RIC_REJECT) channel_rte_trace_out(D_FILTERS, c, rt, "rejected by protocol"); - goto reject_noset; + goto reject; } if (v > 0)