diff --git a/res/res_stasis.c b/res/res_stasis.c index 42a19bf5607a11600e9f0b0e85f5d6f904db3c1e..1f5296d8ed4ab9c37980f73891921b6469cc481f 100644 --- a/res/res_stasis.c +++ b/res/res_stasis.c @@ -1992,6 +1992,9 @@ static int unload_module(void) messaging_cleanup(); cleanup(); + + stasis_app_control_shutdown(); + ao2_cleanup(apps_registry); apps_registry = NULL; @@ -2007,8 +2010,6 @@ static int unload_module(void) ao2_cleanup(app_bridges_playback); app_bridges_playback = NULL; - stasis_app_control_shutdown(); - STASIS_MESSAGE_TYPE_CLEANUP(end_message_type); STASIS_MESSAGE_TYPE_CLEANUP(start_message_type); diff --git a/res/stasis/control.c b/res/stasis/control.c index 655fc1f69bd26a5762342ebdc5f8327c43d7aec0..3a6dec2b66c8f698bfc16b6178fee53db9cd1ba2 100644 --- a/res/stasis/control.c +++ b/res/stasis/control.c @@ -1544,7 +1544,9 @@ void stasis_app_control_shutdown(void) { ast_mutex_lock(&dial_bridge_lock); shutting_down = 1; - ao2_cleanup(dial_bridge); - dial_bridge = NULL; + if (dial_bridge) { + ast_bridge_destroy(dial_bridge, 0); + dial_bridge = NULL; + } ast_mutex_unlock(&dial_bridge_lock); }