]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
return success from asr_feed when audio_sink hasnt yet been created. prevents a...
authorTraun Leyden <tleyden@branchcut.com>
Tue, 21 Aug 2007 16:48:56 +0000 (16:48 +0000)
committerTraun Leyden <tleyden@branchcut.com>
Tue, 21 Aug 2007 16:48:56 +0000 (16:48 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@5650 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/asr_tts/mod_openmrcp/mod_openmrcp.c

index 87f6839791793f82e20f1be8b55f19adb68834c6..aefce736ba8b61ed22fd98ea683f64d94283fa51 100644 (file)
@@ -179,7 +179,7 @@ static mrcp_status_t openmrcp_on_session_terminate(mrcp_client_context_t *contex
                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
@@ -289,6 +289,7 @@ static mrcp_status_t openmrcp_recog_start(mrcp_client_context_t *context, openmr
 \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
@@ -390,7 +391,15 @@ static switch_status_t openmrcp_asr_feed(switch_asr_handle_t *ah, void *data, un
        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
@@ -445,7 +454,7 @@ static switch_status_t openmrcp_asr_close(switch_asr_handle_t *ah, switch_asr_fl
 \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
@@ -661,7 +670,7 @@ static switch_status_t openmrcp_read_tts(switch_speech_handle_t *sh, void *data,
        }\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