Commit 4ab54f1a authored by Ondrej Zajicek (work)'s avatar Ondrej Zajicek (work)
Browse files

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.
parent ff2ca10c
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -397,6 +397,12 @@ channel_do_flush(struct channel *c)
    channel_graceful_restart_unlock(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
@@ -411,7 +417,7 @@ channel_do_down(struct channel *c)
  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);

  bmap_free(&c->export_map);
  // bmap_free(&c->export_map);
  memset(&c->stats, 0, sizeof(struct proto_stats));

  c->in_table = NULL;