[asterisk-commits] kmoore: branch group/ari-greedy-atxfer r419562 - /team/group/ari-greedy-atxfe...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Jul 25 08:06:01 CDT 2014


Author: kmoore
Date: Fri Jul 25 08:05:56 2014
New Revision: 419562

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=419562
Log:
Stasis App: Don't grab swap app name until necessary

Moving the acquisition of the app name into the after-bridge callback
simplifies surrounding code and removes the need for an after-bridge
failure callback.

Modified:
    team/group/ari-greedy-atxfer/res/stasis/stasis_bridge.c

Modified: team/group/ari-greedy-atxfer/res/stasis/stasis_bridge.c
URL: http://svnview.digium.com/svn/asterisk/team/group/ari-greedy-atxfer/res/stasis/stasis_bridge.c?view=diff&rev=419562&r1=419561&r2=419562
==============================================================================
--- team/group/ari-greedy-atxfer/res/stasis/stasis_bridge.c (original)
+++ team/group/ari-greedy-atxfer/res/stasis/stasis_bridge.c Fri Jul 25 08:05:56 2014
@@ -45,9 +45,15 @@
 
 static void bridge_stasis_run_cb(struct ast_channel *chan, void *data)
 {
-	RAII_VAR(char *, app_name, data, ast_free);
+	RAII_VAR(char *, app_name, NULL, ast_free);
 	struct ast_app *app_stasis;
 
+	/* Take ownership of the swap_app memory from the datastore */
+	app_name = app_get_replace_channel_app(chan);
+	if (!app_name) {
+		ast_log(LOG_ERROR, "Failed to get app name for %s (%p)\n", ast_channel_name(chan), chan);
+		return;
+	}
 
 	/* find Stasis() */
 	app_stasis = pbx_findapp("Stasis");
@@ -63,13 +69,6 @@
 
 	/* run Stasis() */
 	pbx_exec(chan, app_stasis, app_name);
-}
-
-static void bridge_stasis_fail_cb(enum ast_bridge_after_cb_reason reason, void *data)
-{
-	char *app_name = data;
-
-	ast_free(app_name);
 }
 
 static int add_channel_to_bridge(
@@ -115,20 +114,10 @@
 
 	if (!control) {
 		/* channel not in Stasis(), get it there */
-		char *swap_app;
-
-		/* Take ownership of the swap_app memory from the datastore */
-		swap_app = app_get_replace_channel_app(bridge_channel->chan);
-		if (!swap_app) {
-			ast_log(LOG_ERROR, "Failed to get app name for channel at %p\n", bridge_channel->chan);
-			return -1;
-		}
-
 		/* Attach after-bridge callback and pass ownership of swap_app to it */
 		if (ast_bridge_set_after_callback(bridge_channel->chan,
-			bridge_stasis_run_cb, bridge_stasis_fail_cb, swap_app)) {
+			bridge_stasis_run_cb, NULL, NULL)) {
 			ast_log(LOG_ERROR, "Failed to set after bridge callback\n");
-			ast_free(swap_app);
 			return -1;
 		}
 




More information about the asterisk-commits mailing list