From 8b3083cac53df630a03e4f233701ac94c730ef95 Mon Sep 17 00:00:00 2001 From: Corey Farrell Date: Sun, 7 Jan 2018 22:38:49 -0500 Subject: [PATCH] res_stasis: Fix dial bridge unload. If the dial bridge has been created it must be released by calling ast_bridge_destroy, simply releasing the ao2 reference is not enough. Also move stasis_app_control_shutdown earlier in unload to ensure the bridge cannot be created or grabbed after the app_bridges container is released. Change-Id: I372302de94ca63876069e2585a049c5060e5e767 --- res/res_stasis.c | 5 +++-- res/stasis/control.c | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/res/res_stasis.c b/res/res_stasis.c index 42a19bf560..1f5296d8ed 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 655fc1f69b..3a6dec2b66 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); }