Project "FreeSWITCH Source" received a push.

branch: master updated

       via: 6f9da9a070517ce30e9edec6a7d2536db0646c33 (commit)
       via: 8037b69f40413784631c59942b5d4fc856cff845 (commit)
       via: 67edc7c3215f6476452f3ff7ee82ba559c39656f (commit)
       via: 2adfc50af7958eea12c15e023bcf80b18a4c73f9 (commit)
      from: eeac03ef5028b565b28364752ef5a48307ca17d4 (commit)


= COMMIT LOG ===========================================================
committer: Moises Silva
comments: 
Merge branch 'master' of git.freeswitch.org:freeswitch
committer: Christopher Rienzo
comments: 
FS-3043 break during mod_unimrcp can hang session

diff --git a/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c b/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c
index 734ef21..d5bac5f 100644
--- a/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c
+++ b/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c
@@ -1363,7 +1363,7 @@ static switch_status_t speech_channel_stop(speech_channel_t *schannel)
 		}
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "(%s) %s stopped\n", schannel->name, speech_channel_type_to_string(schannel->type));
 	} else if (schannel->state == SPEECH_CHANNEL_DONE) {
-		speech_channel_set_state(schannel, SPEECH_CHANNEL_READY);
+		speech_channel_set_state_unlocked(schannel, SPEECH_CHANNEL_READY);
 	}
 
   done:
committer: Marc Olivier Chouinard
comments: 
mod_conference: Added to the Auto OutCall support to specify the conf profile to be used using variable : conference_auto_outcall_profile

diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c
index 961a140..0aee352 100644
--- a/src/mod/applications/mod_conference/mod_conference.c
+++ b/src/mod/applications/mod_conference/mod_conference.c
@@ -401,13 +401,14 @@ static switch_status_t conference_outcall(conference_obj_t *conference,
 										  char *bridgeto, uint32_t timeout, 
 										  char *flags, 
 										  char *cid_name, 
-										  char *cid_num, 
+										  char *cid_num,
+										  char *profile,
 										  switch_call_cause_t *cause,
 										  switch_call_cause_t *cancel_cause);
 static switch_status_t conference_outcall_bg(conference_obj_t *conference,
 											 char *conference_name,
 											 switch_core_session_t *session, char *bridgeto, uint32_t timeout, const char *flags, const char *cid_name,
-											 const char *cid_num, const char *call_uuid, switch_call_cause_t *cancel_cause);
+											 const char *cid_num, const char *call_uuid, const char *profile, switch_call_cause_t *cancel_cause);
 SWITCH_STANDARD_APP(conference_function);
 static void launch_conference_thread(conference_obj_t *conference);
 static void launch_conference_video_thread(conference_obj_t *conference);
@@ -2410,6 +2411,7 @@ static void conference_loop_output(conference_member_t *member)
 			const char *cid_num = switch_channel_get_variable(channel, "conference_auto_outcall_caller_id_number");
 			const char *toval = switch_channel_get_variable(channel, "conference_auto_outcall_timeout");
 			const char *flags = switch_channel_get_variable(channel, "conference_auto_outcall_flags");
+			const char *profile = switch_channel_get_variable(channel, "conference_auto_outcall_profile");
 			const char *ann = switch_channel_get_variable(channel, "conference_auto_outcall_announce");
 			const char *prefix = switch_channel_get_variable(channel, "conference_auto_outcall_prefix");
 			int to = 60;
@@ -2441,7 +2443,7 @@ static void conference_loop_output(conference_member_t *member)
 					char *dial_str = switch_mprintf("%s%s", switch_str_nil(prefix), argv[x]);
 					switch_assert(dial_str);
 					conference_outcall_bg(member->conference, NULL, NULL, dial_str, to, switch_str_nil(flags), cid_name, cid_num, NULL, 
-										  &member->conference->cancel_cause);
+										  profile, &member->conference->cancel_cause);
 					switch_safe_free(dial_str);
 				}
 				switch_safe_free(cpstr);
@@ -4264,9 +4266,9 @@ static switch_status_t conf_api_sub_dial(conference_obj_t *conference, switch_st
 	}
 
 	if (conference) {
-		conference_outcall(conference, NULL, NULL, argv[2], 60, NULL, argv[4], argv[3], &cause, NULL);
+		conference_outcall(conference, NULL, NULL, argv[2], 60, NULL, argv[4], argv[3], NULL, &cause, NULL);
 	} else {
-		conference_outcall(NULL, argv[0], NULL, argv[2], 60, NULL, argv[4], argv[3], &cause, NULL);
+		conference_outcall(NULL, argv[0], NULL, argv[2], 60, NULL, argv[4], argv[3], NULL, &cause, NULL);
 	}
 	stream->write_function(stream, "Call Requested: result: [%s]\n", switch_channel_cause2str(cause));
 
@@ -4289,9 +4291,9 @@ static switch_status_t conf_api_sub_bgdial(conference_obj_t *conference, switch_
 	switch_uuid_format(uuid_str, &uuid);
 
 	if (conference) {
-		conference_outcall_bg(conference, NULL, NULL, argv[2], 60, NULL, argv[4], argv[3], uuid_str, NULL);
+		conference_outcall_bg(conference, NULL, NULL, argv[2], 60, NULL, argv[4], argv[3], uuid_str, NULL, NULL);
 	} else {
-		conference_outcall_bg(NULL, argv[0], NULL, argv[2], 60, NULL, argv[4], argv[3], uuid_str, NULL);
+		conference_outcall_bg(NULL, argv[0], NULL, argv[2], 60, NULL, argv[4], argv[3], uuid_str, NULL, NULL);
 	}
 
 	stream->write_function(stream, "OK Job-UUID: %s\n", uuid_str);
@@ -4807,7 +4809,8 @@ static switch_status_t conference_outcall(conference_obj_t *conference,
 										  switch_core_session_t *session,
 										  char *bridgeto, uint32_t timeout, 
 										  char *flags, char *cid_name, 
-										  char *cid_num, 
+										  char *cid_num,
+										  char *profile,
 										  switch_call_cause_t *cause,
 										  switch_call_cause_t *cancel_cause)
 {
@@ -4817,6 +4820,7 @@ static switch_status_t conference_outcall(conference_obj_t *conference,
 	switch_channel_t *caller_channel = NULL;
 	char appdata[512];
 	int rdlock = 0;
+	switch_bool_t have_flags = SWITCH_FALSE;
 
 	*cause = SWITCH_CAUSE_NORMAL_CLEARING;
 
@@ -4902,13 +4906,16 @@ static switch_status_t conference_outcall(conference_obj_t *conference,
 			status = SWITCH_STATUS_MEMERR;
 			goto done;
 		}
-		/* add them to the conference */
+
 		if (flags && strcasecmp(flags, "none")) {
-			switch_snprintf(appdata, sizeof(appdata), "%s+flags{%s}", conference_name, flags);
-			switch_caller_extension_add_application(peer_session, extension, (char *) global_app_name, appdata);
-		} else {
-			switch_caller_extension_add_application(peer_session, extension, (char *) global_app_name, conference_name);
+			have_flags = SWITCH_TRUE;
 		}
+		/* add them to the conference */
+
+		switch_snprintf(appdata, sizeof(appdata), "%s%s%s%s%s%s", conference_name,
+				profile?"@":"", profile?profile:"",
+				have_flags?"+flags{":"", have_flags?flags:"", have_flags?"}":"");
+		switch_caller_extension_add_application(peer_session, extension, (char *) global_app_name, appdata);
 
 		switch_channel_set_caller_extension(peer_channel, extension);
 		switch_channel_set_state(peer_channel, CS_EXECUTE);
@@ -4940,6 +4947,7 @@ struct bg_call {
 	char *cid_num;
 	char *conference_name;
 	char *uuid;
+	char *profile;
 	switch_call_cause_t *cancel_cause;
 	switch_memory_pool_t *pool;
 };
@@ -4953,7 +4961,7 @@ static void *SWITCH_THREAD_FUNC conference_outcall_run(switch_thread_t *thread,
 		switch_event_t *event;
 
 		conference_outcall(call->conference, call->conference_name,
-						   call->session, call->bridgeto, call->timeout, call->flags, call->cid_name, call->cid_num, &cause, call->cancel_cause);
+						   call->session, call->bridgeto, call->timeout, call->flags, call->cid_name, call->cid_num, call->profile, &cause, call->cancel_cause);
 
 		if (call->conference && test_eflag(call->conference, EFLAG_BGDIAL_RESULT) &&
 			switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
@@ -4969,6 +4977,7 @@ static void *SWITCH_THREAD_FUNC conference_outcall_run(switch_thread_t *thread,
 		switch_safe_free(call->cid_num);
 		switch_safe_free(call->conference_name);
 		switch_safe_free(call->uuid);
+		switch_safe_free(call->profile);
 		if (call->pool) {
 			switch_core_destroy_memory_pool(&call->pool);
 		}
@@ -4981,7 +4990,7 @@ static void *SWITCH_THREAD_FUNC conference_outcall_run(switch_thread_t *thread,
 static switch_status_t conference_outcall_bg(conference_obj_t *conference,
 											 char *conference_name,
 											 switch_core_session_t *session, char *bridgeto, uint32_t timeout, const char *flags, const char *cid_name,
-											 const char *cid_num, const char *call_uuid, switch_call_cause_t *cancel_cause)
+											 const char *cid_num, const char *call_uuid, const char *profile, switch_call_cause_t *cancel_cause)
 {
 	struct bg_call *call = NULL;
 	switch_thread_t *thread;
@@ -5025,6 +5034,10 @@ static switch_status_t conference_outcall_bg(conference_obj_t *conference,
 		call->uuid = strdup(call_uuid);
 	}
 
+        if (profile) {
+                call->profile = strdup(profile);
+        }
+
 	switch_threadattr_create(&thd_attr, pool);
 	switch_threadattr_detach_set(thd_attr, 1);
 	switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
@@ -5750,7 +5763,7 @@ SWITCH_STANDARD_APP(conference_function)
 	/* if we're using "bridge:" make an outbound call and bridge it in */
 	if (!zstr(bridgeto) && strcasecmp(bridgeto, "none")) {
 		switch_call_cause_t cause;
-		if (conference_outcall(conference, NULL, session, bridgeto, 60, NULL, NULL, NULL, &cause, NULL) != SWITCH_STATUS_SUCCESS) {
+		if (conference_outcall(conference, NULL, session, bridgeto, 60, NULL, NULL, NULL, NULL, &cause, NULL) != SWITCH_STATUS_SUCCESS) {
 			goto done;
 		}
 	} else {
committer: Anthony Minessale
comments: 
take out default it seems to suck on 32 bit

diff --git a/conf/autoload_configs/switch.conf.xml b/conf/autoload_configs/switch.conf.xml
index 32cb76f..44893b9 100644
--- a/conf/autoload_configs/switch.conf.xml
+++ b/conf/autoload_configs/switch.conf.xml
@@ -25,7 +25,7 @@
     <param name="colorize-console" value="true"/>
 
     <!-- minimum idle CPU before refusing calls -->
-    <param name="min-idle-cpu" value="25"/>
+    <!--<param name="min-idle-cpu" value="25"/>-->
 
     <!--
 	Max number of sessions to allow at any given time.
========================================================================

Summary of changes:
 conf/autoload_configs/switch.conf.xml              |    2 +-
 .../applications/mod_conference/mod_conference.c   |   45 +++++++++++++-------
 src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c          |    2 +-
 3 files changed, 31 insertions(+), 18 deletions(-)

this email was generated because of /git/your-repo.git/hooks/post-receive by the file /git-core/contrib/hooks/post-receive-email
For more info, see http://blog.chomperstomp.com/?p=630 --
FreeSWITCH Source