diff --git a/pbx/pbx_config.c b/pbx/pbx_config.c index f39dde54db..cb1c45a8c3 100644 --- a/pbx/pbx_config.c +++ b/pbx/pbx_config.c @@ -104,6 +104,8 @@ static int clearglobalvars_config = 0; static int extenpatternmatchnew_config = 0; static char *overrideswitch_config = NULL; +static struct stasis_subscription *fully_booted_subscription; + AST_MUTEX_DEFINE_STATIC(save_dialplan_lock); AST_MUTEX_DEFINE_STATIC(reload_lock); @@ -1633,6 +1635,8 @@ static int unload_module(void) ast_manager_unregister(AMI_EXTENSION_REMOVE); ast_context_destroy(NULL, registrar); + stasis_unsubscribe_and_join(fully_booted_subscription); + return 0; } @@ -1992,7 +1996,7 @@ static void startup_event_cb(void *data, struct stasis_subscription *sub, struct ast_log(LOG_WARNING, "users.conf is deprecated and will be removed in a future version of Asterisk\n"); - stasis_unsubscribe(sub); + fully_booted_subscription = stasis_unsubscribe(fully_booted_subscription); } static void pbx_load_users(void) @@ -2016,7 +2020,8 @@ static void pbx_load_users(void) return; /*! \todo Remove users.conf support in Asterisk 23 */ - stasis_subscribe_pool(ast_manager_get_topic(), startup_event_cb, NULL); + fully_booted_subscription = + stasis_subscribe_pool(ast_manager_get_topic(), startup_event_cb, NULL); for (cat = ast_category_browse(cfg, NULL); cat ; cat = ast_category_browse(cfg, cat)) { if (!strcasecmp(cat, "general"))