]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
recurse variable expansion in api variables
authorAnthony Minessale <anthony.minessale@gmail.com>
Wed, 7 Nov 2007 00:00:51 +0000 (00:00 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Wed, 7 Nov 2007 00:00:51 +0000 (00:00 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6169 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/switch_channel.c

index 8a287c705dd150bc78735fb21e56543651767999..555132fe380a331b178a5c30a55be14741ee62ca 100644 (file)
@@ -1379,12 +1379,21 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables(switch_channel_t *channel
                                        SWITCH_STANDARD_STREAM(stream);
 
                                        if (stream.data) {
+                                               char *expanded = NULL;
+                                               
+                                               if ((expanded = switch_channel_expand_variables(channel, vval)) == vval) {
+                                                       expanded = NULL;
+                                               } else {
+                                                       vval = expanded;
+                                               }
+
                                                if (switch_api_execute(vname, vval, channel->session, &stream) == SWITCH_STATUS_SUCCESS) {
                                                        func_val = stream.data;
                                                        sub_val = func_val;
-                                               } else {
-                                                       free(stream.data);
                                                }
+                                               
+                                               switch_safe_free(expanded);
+                                               free(stream.data);
                                        } else {
                                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error!\n");
                                                free(data);