From 82bbb45d96a516e2f4256c9ae4eddd97e7fae04f Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 5 Apr 2013 14:27:17 -0500 Subject: [PATCH] FS-5216 don't allow recursive call to speek --- src/mod/languages/mod_spidermonkey/mod_spidermonkey.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c b/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c index 7c2928db4c..e6ab03b4d7 100644 --- a/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c +++ b/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c @@ -1968,6 +1968,12 @@ static JSBool session_speak(JSContext * cx, JSObject * obj, uintN argc, jsval * return JS_FALSE; } + if (jss->speech && jss->speech->speaking) { + eval_some_js("~throw new Error(\"Recursive call not allowed\");", cx, obj, rval); + return JS_FALSE; + } + + if (jss->speech && strcasecmp(jss->speech->sh.name, tts_name)) { destroy_speech_engine(jss); } @@ -2009,7 +2015,9 @@ static JSBool session_speak(JSContext * cx, JSObject * obj, uintN argc, jsval * switch_core_speech_flush_tts(&jss->speech->sh); if (switch_core_codec_ready(&jss->speech->codec)) { + jss->speech->speaking = 1; switch_ivr_speak_text_handle(jss->session, &jss->speech->sh, &jss->speech->codec, NULL, text, &args); + jss->speech->speaking = 0; } JS_ResumeRequest(cx, cb_state.saveDepth); check_hangup_hook(jss, &ret);