提交 82bbb45d authored 作者: Anthony Minessale's avatar Anthony Minessale

FS-5216 don't allow recursive call to speek

上级 06631966
...@@ -1968,6 +1968,12 @@ static JSBool session_speak(JSContext * cx, JSObject * obj, uintN argc, jsval * ...@@ -1968,6 +1968,12 @@ static JSBool session_speak(JSContext * cx, JSObject * obj, uintN argc, jsval *
return JS_FALSE; 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)) { if (jss->speech && strcasecmp(jss->speech->sh.name, tts_name)) {
destroy_speech_engine(jss); destroy_speech_engine(jss);
} }
...@@ -2009,7 +2015,9 @@ static JSBool session_speak(JSContext * cx, JSObject * obj, uintN argc, jsval * ...@@ -2009,7 +2015,9 @@ static JSBool session_speak(JSContext * cx, JSObject * obj, uintN argc, jsval *
switch_core_speech_flush_tts(&jss->speech->sh); switch_core_speech_flush_tts(&jss->speech->sh);
if (switch_core_codec_ready(&jss->speech->codec)) { 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); 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); JS_ResumeRequest(cx, cb_state.saveDepth);
check_hangup_hook(jss, &ret); check_hangup_hook(jss, &ret);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论