]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
do expand_variables in the set app
authorAnthony Minessale <anthony.minessale@gmail.com>
Wed, 9 Jul 2008 00:53:10 +0000 (00:53 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Wed, 9 Jul 2008 00:53:10 +0000 (00:53 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@8952 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/applications/mod_dptools/mod_dptools.c

index 792d626e8747ed7771712a3255f2fda9f9188cc6..d6320a6681201430f8b71fcad861928a48e91f2b 100644 (file)
@@ -701,10 +701,13 @@ SWITCH_STANDARD_APP(deflect_function)
 SWITCH_STANDARD_APP(set_function)
 {
        char *var, *val = NULL;
-
+       
        if (switch_strlen_zero(data)) {
                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No variable name specified.\n");
        } else {
+               switch_channel_t *channel = switch_core_session_get_channel(session);
+               char *expanded = NULL;
+
                var = switch_core_session_strdup(session, data);
                val = strchr(var, '=');
 
@@ -715,8 +718,16 @@ SWITCH_STANDARD_APP(set_function)
                        }
                }
 
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "SET [%s]=[%s]\n", var, val ? val : "UNDEF");
-               switch_channel_set_variable(switch_core_session_get_channel(session), var, val);
+               if (val) {
+                       expanded = switch_channel_expand_variables(channel, val);
+               }
+
+               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "SET [%s]=[%s]\n", var, expanded ? expanded : "UNDEF");
+               switch_channel_set_variable(channel, var, expanded);
+
+               if (expanded && expanded != val) {
+                       switch_safe_free(expanded);
+               }
        }
 }