Modified: freeswitch/trunk/src/switch_channel.c (16539 => 16540)
--- freeswitch/trunk/src/switch_channel.c 2010-01-29 22:03:37 UTC (rev 16539)
+++ freeswitch/trunk/src/switch_channel.c 2010-01-30 02:55:49 UTC (rev 16540)
@@ -741,7 +741,7 @@
switch_status_t switch_event_base_add_header(switch_event_t *event, switch_stack_t stack, const char *header_name, char *data);
-SWITCH_DECLARE(switch_status_t) switch_channel_set_variable_printf(switch_channel_t *channel, const char *varname, const char *fmt, ...)
+SWITCH_DECLARE(switch_status_t) switch_channel_set_variable_printf(switch_channel_t *channel, const char *varname, const char *fmt, ...)
{
int ret = 0;
char *data;
@@ -763,10 +763,39 @@
return SWITCH_STATUS_MEMERR;
}
- switch_event_base_add_header(channel->variables, SWITCH_STACK_BOTTOM, varname, data);
+ status = switch_channel_set_variable(channel, varname, data);
+ free(data);
+ }
+ switch_mutex_unlock(channel->profile_mutex);
+
+ return status;
+}
- status = SWITCH_STATUS_SUCCESS;
+
+SWITCH_DECLARE(switch_status_t) switch_channel_set_variable_name_printf(switch_channel_t *channel, const char *val, const char *fmt, ...)
+{
+ int ret = 0;
+ char *varname;
+ va_list ap;
+ switch_status_t status = SWITCH_STATUS_FALSE;
+
+ switch_assert(channel != NULL);
+
+ switch_mutex_lock(channel->profile_mutex);
+
+ va_start(ap, fmt);
+ ret = switch_vasprintf(&varname, fmt, ap);
+ va_end(ap);
+
+ if (ret == -1) {
+ switch_mutex_unlock(channel->profile_mutex);
+ return SWITCH_STATUS_MEMERR;
}
+
+ status = switch_channel_set_variable(channel, varname, val);
+
+ free(varname);
+
switch_mutex_unlock(channel->profile_mutex);
return status;
@@ -863,7 +892,7 @@
state = switch_channel_get_running_state(other_channel);
mystate = switch_channel_get_running_state(channel);
- if (mystate != ostate || state >= CS_HANGUP || state >= want_state) {
+ if (mystate != ostate || state >= CS_HANGUP || mystate == want_state) {
break;
}
switch_cond_next();