openmrcp_session_destroy(openmrcp_session);\r
}\r
else {\r
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "abnormal session terminate\n");\r
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "abnormal session terminate\n");\r
}\r
return MRCP_STATUS_SUCCESS;\r
}\r
\r
generic_header = mrcp_generic_header_prepare(mrcp_message);\r
if(!generic_header) {\r
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not prepare generic_header\n");\r
return MRCP_STATUS_FAILURE;\r
}\r
\r
media_frame.codec_frame.buffer = data;\r
while(len >= media_frame.codec_frame.size) {\r
if (!audio_sink) {\r
- return SWITCH_STATUS_GENERR;\r
+ /*!\r
+ If there is no audio_sink established yet, discard the audio and\r
+ return SUCCESS. returning anything other than success causes freeswitch\r
+ to abort the call and tear down the channel. One reason there might\r
+ not be an audio sink is that the openmrcp client lib is still in the startup\r
+ process. \r
+ */\r
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "!audio_sink\n");\r
+ return SWITCH_STATUS_SUCCESS; \r
}\r
audio_sink->method_set->write_frame(audio_sink,&media_frame);\r
\r
\r
// terminate client session\r
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Going to TERMINATE SESSION\n");\r
- switch_set_flag_locked(asr_session, FLAG_TERMINATING);\r
+ switch_set_flag_locked(asr_session, FLAG_TERMINATING); \r
mrcp_client_context_session_terminate(context, asr_session->client_session);\r
\r
switch_set_flag(ah, SWITCH_ASR_FLAG_CLOSED);\r
}\r
\r
if (!switch_test_flag(tts_session, FLAG_FEED_STARTED)) {\r
- switch_set_flag(tts_session, FLAG_FEED_STARTED);\r
+ switch_set_flag(tts_session, FLAG_FEED_STARTED); // shouldn't this use set_flag_locked? -tl\r
if(audio_source->method_set->open) {\r
audio_source->method_set->open(audio_source);\r
}\r