From a56dba7f8a081ea5e6d2bc93a0975ac36cf25262 Mon Sep 17 00:00:00 2001 From: Arsen Chaloyan Date: Mon, 20 Aug 2007 18:10:00 +0000 Subject: [PATCH] asr result in mrcp message body must be checked to exist before use git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@5633 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/mod/asr_tts/mod_openmrcp/mod_openmrcp.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/mod/asr_tts/mod_openmrcp/mod_openmrcp.c b/src/mod/asr_tts/mod_openmrcp/mod_openmrcp.c index 53d3f8fec4..764cb1c721 100644 --- a/src/mod/asr_tts/mod_openmrcp/mod_openmrcp.c +++ b/src/mod/asr_tts/mod_openmrcp/mod_openmrcp.c @@ -487,15 +487,21 @@ static switch_status_t openmrcp_asr_get_results(switch_asr_handle_t *ah, char ** */ - 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: %s"); + ret = SWITCH_STATUS_FALSE; } // since we are returning our result here, future calls to check_results