From: Corey Farrell Date: Mon, 8 Jan 2018 03:38:49 +0000 (-0500) Subject: res_stasis: Fix dial bridge unload. X-Git-Tag: 15.3.0-rc1~123^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9876bb993c09d00e434791135c2b46511c2f65d2;p=thirdparty%2Fasterisk.git 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 --- 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 314d68a087..8199e46b24 100644 --- a/res/stasis/control.c +++ b/res/stasis/control.c @@ -1507,7 +1507,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); }