[Freeswitch-svn] [commit] r5641 - in freeswitch/branches/greenlizard/src: . mod/asr_tts/mod_openmrcp mod/timers/mod_softtimer
Freeswitch SVN
greenlizard at freeswitch.org
Mon Aug 20 18:01:13 EDT 2007
Author: greenlizard
Date: Mon Aug 20 18:01:13 2007
New Revision: 5641
Modified:
freeswitch/branches/greenlizard/src/mod/asr_tts/mod_openmrcp/mod_openmrcp.c
freeswitch/branches/greenlizard/src/mod/timers/mod_softtimer/mod_softtimer.c
freeswitch/branches/greenlizard/src/switch_loadable_module.c
Log:
merge trunk 5627:5639
Modified: freeswitch/branches/greenlizard/src/mod/asr_tts/mod_openmrcp/mod_openmrcp.c
==============================================================================
--- freeswitch/branches/greenlizard/src/mod/asr_tts/mod_openmrcp/mod_openmrcp.c (original)
+++ freeswitch/branches/greenlizard/src/mod/asr_tts/mod_openmrcp/mod_openmrcp.c Mon Aug 20 18:01:13 2007
@@ -99,7 +99,8 @@
FLAG_BARGE = (1 << 1),
FLAG_READY = (1 << 2),
FLAG_SPEAK_COMPLETE = (1 << 3),
- FLAG_FEED_STARTED = (1 << 4)
+ FLAG_FEED_STARTED = (1 << 4),
+ FLAG_TERMINATING = (1 << 5)
} mrcp_flag_t;
typedef struct {
@@ -173,7 +174,13 @@
if(!openmrcp_session) {
return MRCP_STATUS_FAILURE;
}
- openmrcp_session_destroy(openmrcp_session);
+
+ if (switch_test_flag(openmrcp_session, FLAG_TERMINATING)) {
+ openmrcp_session_destroy(openmrcp_session);
+ }
+ else {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "abnormal session terminate\n");
+ }
return MRCP_STATUS_SUCCESS;
}
@@ -436,6 +443,7 @@
// terminate client session
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Going to TERMINATE SESSION\n");
+ switch_set_flag_locked(asr_session, FLAG_TERMINATING);
mrcp_client_context_session_terminate(context, asr_session->client_session);
switch_set_flag(ah, SWITCH_ASR_FLAG_CLOSED);
@@ -487,15 +495,21 @@
</result>
*/
- char *marker = "?>"; // FIXME -- lame and brittle way of doing this. use regex or better.
- char *position = strstr(asr_session->mrcp_message_last_rcvd->body, marker);
- if (!position) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Bad result received from mrcp server: %s", asr_session->mrcp_message_last_rcvd->body);
- ret = SWITCH_STATUS_FALSE;
+ if(asr_session->mrcp_message_last_rcvd && asr_session->mrcp_message_last_rcvd->body) {
+ char *marker = "?>"; // FIXME -- lame and brittle way of doing this. use regex or better.
+ char *position = strstr(asr_session->mrcp_message_last_rcvd->body, marker);
+ if (!position) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Bad result received from mrcp server: %s", asr_session->mrcp_message_last_rcvd->body);
+ ret = SWITCH_STATUS_FALSE;
+ }
+ else {
+ position += strlen(marker);
+ *xmlstr = strdup(position);
+ }
}
else {
- position += strlen(marker);
- *xmlstr = strdup(position);
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No result received from mrcp server");
+ ret = SWITCH_STATUS_FALSE;
}
// since we are returning our result here, future calls to check_results
@@ -599,6 +613,7 @@
/* terminate tts session */
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "terminate tts_session\n");
+ switch_set_flag_locked(tts_session, FLAG_TERMINATING);
mrcp_client_context_session_terminate(context,tts_session->client_session);
return SWITCH_STATUS_SUCCESS;
}
@@ -705,6 +720,7 @@
return SWITCH_STATUS_TERM;
}
+ mrcp_logger.priority = MRCP_PRIO_EMERGENCY;
if ((settings = switch_xml_child(cfg, "settings"))) {
for (param = switch_xml_child(settings, "param"); param; param = param->next) {
const char *var = switch_xml_attr_soft(param, "name");
@@ -714,6 +730,8 @@
asr_profile_name = val;
} else if (!strcasecmp(var, "tts_default_profile")) {
tts_profile_name = val;
+ } else if (!strcasecmp(var, "log_level")) {
+ mrcp_logger.priority = atoi(val);
}
}
}
Modified: freeswitch/branches/greenlizard/src/mod/timers/mod_softtimer/mod_softtimer.c
==============================================================================
--- freeswitch/branches/greenlizard/src/mod/timers/mod_softtimer/mod_softtimer.c (original)
+++ freeswitch/branches/greenlizard/src/mod/timers/mod_softtimer/mod_softtimer.c Mon Aug 20 18:01:13 2007
@@ -74,7 +74,7 @@
#define IDLE_SPEED 100
-static inline switch_status_t timer_init(switch_timer_t *timer)
+static switch_status_t timer_init(switch_timer_t *timer)
{
timer_private_t *private_info;
int sanity = 0;
@@ -112,7 +112,7 @@
-static inline switch_status_t timer_step(switch_timer_t *timer)
+static switch_status_t timer_step(switch_timer_t *timer)
{
timer_private_t *private_info = timer->private_info;
uint64_t samples;
@@ -136,7 +136,7 @@
}
-static inline switch_status_t timer_next(switch_timer_t *timer)
+static switch_status_t timer_next(switch_timer_t *timer)
{
timer_private_t *private_info = timer->private_info;
@@ -154,7 +154,7 @@
return SWITCH_STATUS_FALSE;
}
-static inline switch_status_t timer_check(switch_timer_t *timer)
+static switch_status_t timer_check(switch_timer_t *timer)
{
timer_private_t *private_info = timer->private_info;
switch_status_t status = SWITCH_STATUS_SUCCESS;
@@ -182,7 +182,7 @@
}
-static inline switch_status_t timer_destroy(switch_timer_t *timer)
+static switch_status_t timer_destroy(switch_timer_t *timer)
{
timer_private_t *private_info = timer->private_info;
switch_mutex_lock(globals.mutex);
Modified: freeswitch/branches/greenlizard/src/switch_loadable_module.c
==============================================================================
--- freeswitch/branches/greenlizard/src/switch_loadable_module.c (original)
+++ freeswitch/branches/greenlizard/src/switch_loadable_module.c Mon Aug 20 18:01:13 2007
@@ -1047,6 +1047,7 @@
assert(module != NULL);
switch_loadable_module_unprocess(module);
+ switch_core_hash_delete_locked(loadable_modules.module_hash, module->key, loadable_modules.mutex);
if (module->switch_module_shutdown) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Stopping: %s\n", module->module_interface->module_name);
@@ -1067,7 +1068,7 @@
}
- switch_core_hash_delete_locked(loadable_modules.module_hash, module->key, loadable_modules.mutex);
+
}
More information about the Freeswitch-svn
mailing list