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);
 }