[asterisk-commits] elguero: trunk r419252 - in /trunk: CHANGES main/bridge_channel.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Tue Jul 22 15:22:39 CDT 2014


Author: elguero
Date: Tue Jul 22 15:22:36 2014
New Revision: 419252

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=419252
Log:
core/bridge_channel: Substitute Variables In Features Application Map

Say you wanted to include variables in an application map and have those
variables substituted and passed along to the application being executed;
currently this does not happen.

This patch adds this ability to pass channel variable values to an
application before being executed.

ASTERISK-22608 #close
Reported by: Michael L. Young
patches:
  features_substitute_arguments_v2.diff
                                     uploaded by Michael L. Young (license 5026)

Review: https://reviewboard.asterisk.org/r/3819/

Modified:
    trunk/CHANGES
    trunk/main/bridge_channel.c

Modified: trunk/CHANGES
URL: http://svnview.digium.com/svn/asterisk/trunk/CHANGES?view=diff&rev=419252&r1=419251&r2=419252
==============================================================================
--- trunk/CHANGES (original)
+++ trunk/CHANGES Tue Jul 22 15:22:36 2014
@@ -136,6 +136,9 @@
    available to a channel when the channel is bridged. Previously, these
    features were provided exclusively by the caller of ast_bridge_join()
    outside of "basic" type bridges.
+
+ * Channel variables are now substituted in arguments passed to applications
+   run by using dynamic features.
 
 JACK_HOOK
 ------------------

Modified: trunk/main/bridge_channel.c
URL: http://svnview.digium.com/svn/asterisk/trunk/main/bridge_channel.c?view=diff&rev=419252&r1=419251&r2=419252
==============================================================================
--- trunk/main/bridge_channel.c (original)
+++ trunk/main/bridge_channel.c Tue Jul 22 15:22:36 2014
@@ -1020,7 +1020,16 @@
 		if (!app) {
 			ast_log(LOG_WARNING, "Could not find application (%s)\n", app_name);
 		} else {
-			res = pbx_exec(chan, app, app_args);
+			struct ast_str *substituted_args = ast_str_create(16);
+
+			if (substituted_args) {
+				ast_str_substitute_variables(&substituted_args, 0, chan, app_args);
+				res = pbx_exec(chan, app, ast_str_buffer(substituted_args));
+				ast_free(substituted_args);
+			} else {
+				ast_log(LOG_WARNING, "Could not substitute application argument variables for %s\n", app_name);
+				res = pbx_exec(chan, app, app_args);
+			}
 		}
 	}
 	return res;




More information about the asterisk-commits mailing list