From d1d6081d630bcd6d4cea941498af84493ce928aa Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 9 Feb 2007 21:48:24 +0000 Subject: [PATCH] phrase update git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4185 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/mod/say/mod_say_en/mod_say_en.c | 9 ++++++--- src/switch_ivr.c | 21 +++++++++++++-------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/mod/say/mod_say_en/mod_say_en.c b/src/mod/say/mod_say_en/mod_say_en.c index 3894e4da91..0d02231638 100644 --- a/src/mod/say/mod_say_en/mod_say_en.c +++ b/src/mod/say/mod_say_en/mod_say_en.c @@ -46,8 +46,11 @@ static const char modname[] = "mod_say_en"; #define say_file(...) {\ char tmp[80];\ + switch_status_t status;\ snprintf(tmp, sizeof(tmp), __VA_ARGS__);\ - switch_ivr_play_file(session, NULL, tmp, args); \ + if ((status = switch_ivr_play_file(session, NULL, tmp, args)) != SWITCH_STATUS_SUCCESS){ \ + return status;\ + }\ if (!switch_channel_ready(switch_core_session_get_channel(session))) {\ return SWITCH_STATUS_FALSE;\ }}\ @@ -540,10 +543,10 @@ static switch_status_t en_say(switch_core_session_t *session, } if (say_cb) { - say_cb(session, tosay, type, method, args); + return say_cb(session, tosay, type, method, args); } - return SWITCH_STATUS_SUCCESS; + return SWITCH_STATUS_FALSE; } static const switch_say_interface_t en_say_interface= { diff --git a/src/switch_ivr.c b/src/switch_ivr.c index e90000b5d7..01ba608940 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -4697,7 +4697,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_phrase_macro(switch_core_session_t *s } if (match) { - for (action = switch_xml_child(match, "action"); action; action = action->next) { + status = SWITCH_STATUS_SUCCESS; + for (action = switch_xml_child(match, "action"); action && status == SWITCH_STATUS_SUCCESS; action = action->next) { char *adata = (char *) switch_xml_attr_soft(action, "data"); char *func = (char *) switch_xml_attr_soft(action, "function"); @@ -4739,7 +4740,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_phrase_macro(switch_core_session_t *s char *say_type = (char *) switch_xml_attr_soft(action, "type"); char *say_method = (char *) switch_xml_attr_soft(action, "method"); - si->say_function(session, odata, get_say_type_by_name(say_type), get_say_method_by_name(say_method), args); + status = si->say_function(session, odata, get_say_type_by_name(say_type), get_say_method_by_name(say_method), args); } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid SAY Interface [%s]!\n", lang); } @@ -4747,12 +4748,12 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_phrase_macro(switch_core_session_t *s switch_codec_t *read_codec; if ((read_codec = switch_core_session_get_read_codec(session))) { - switch_ivr_speak_text(session, - tts_engine, - tts_voice, - read_codec->implementation->samples_per_second, - odata, - args); + status = switch_ivr_speak_text(session, + tts_engine, + tts_voice, + read_codec->implementation->samples_per_second, + odata, + args); } } } @@ -4763,6 +4764,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_phrase_macro(switch_core_session_t *s switch_safe_free(substituted); } + if (status != SWITCH_STATUS_SUCCESS) { + break; + } + input = input->next; }