[Freeswitch-svn] [commit] r8771 - freeswitch/trunk/src

Freeswitch SVN anthm at freeswitch.org
Thu Jun 5 15:36:33 EDT 2008


Author: anthm
Date: Thu Jun  5 15:36:33 2008
New Revision: 8771

Modified:
   freeswitch/trunk/src/switch_channel.c

Log:
honor execute_on_answer on outbound legs too

Modified: freeswitch/trunk/src/switch_channel.c
==============================================================================
--- freeswitch/trunk/src/switch_channel.c	(original)
+++ freeswitch/trunk/src/switch_channel.c	Thu Jun  5 15:36:33 2008
@@ -1490,6 +1490,8 @@
 	switch_event_t *event;
 	const char *uuid;
 	switch_core_session_t *other_session;
+	const char *var;
+	char *app;
 
 	switch_assert(channel != NULL);
 
@@ -1525,7 +1527,17 @@
 
 	switch_channel_set_variable(channel, "endpoint_disposition", "ANSWER");
 	switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_NOTICE, "Channel [%s] has been answered\n", channel->name);
+	if ((var = switch_channel_get_variable(channel, SWITCH_CHANNEL_EXECUTE_ON_ANSWER_VARIABLE))) {
+		char *arg = NULL;
 
+		app = switch_core_session_strdup(channel->session, var);
+
+		if ((arg = strchr(app, ' '))) {
+			*arg++ = '\0';
+		}
+
+		switch_core_session_execute_application(channel->session, app, arg);
+	}
 	return SWITCH_STATUS_SUCCESS;
 }
 
@@ -1549,17 +1561,7 @@
 	status = switch_core_session_receive_message(channel->session, &msg);
 
 	if (status == SWITCH_STATUS_SUCCESS) {
-		const char *var = switch_channel_get_variable(channel, SWITCH_CHANNEL_EXECUTE_ON_ANSWER_VARIABLE);
-		char *app;
 		switch_channel_perform_mark_answered(channel, file, func, line);
-		if (var) {
-			char *arg = NULL;
-			app = switch_core_session_strdup(channel->session, var);
-			if ((arg = strchr(app, ' '))) {
-				*arg++ = '\0';
-			}
-			switch_core_session_execute_application(channel->session, app, arg);
-		}
 	} else {
 		switch_channel_hangup(channel, SWITCH_CAUSE_INCOMPATIBLE_DESTINATION);
 	}



More information about the Freeswitch-svn mailing list