Revision
16540
Author
anthm
Date
2010-01-29 20:55:49 -0600 (Fri, 29 Jan 2010)

Log Message

try this wasim

Modified Paths

Diff

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();