From b16d49d8ea28939d50918a1a757e43959e0cf629 Mon Sep 17 00:00:00 2001 From: Dave Horton Date: Wed, 4 Jan 2023 09:24:39 -0500 Subject: [PATCH] Bugfix/gather kill race condition (#207) * further fix for race condition in #206 * #206: ignore request to start bot mode when bot mode is already active --- lib/session/call-session.js | 4 ++-- lib/tasks/gather.js | 12 +++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/session/call-session.js b/lib/session/call-session.js index 095213bb..194ce1c4 100644 --- a/lib/session/call-session.js +++ b/lib/session/call-session.js @@ -454,8 +454,8 @@ class CallSession extends Emitter { async enableBotMode(gather, autoEnable) { try { if (this.backgroundGatherTask) { - this.logger.info('CallSession:enableBotMode - bot mode currently enabled, stop it'); - this.disableBotMode(); + this.logger.info('CallSession:enableBotMode - bot mode currently enabled, ignoring request to start again'); + return; } const t = normalizeJambones(this.logger, [gather]); this.backgroundGatherTask = makeTask(this.logger, t[0]); diff --git a/lib/tasks/gather.js b/lib/tasks/gather.js index 75c3d5b3..0c974150 100644 --- a/lib/tasks/gather.js +++ b/lib/tasks/gather.js @@ -182,6 +182,10 @@ class TaskGather extends Task { this.logger.debug('Gather:exec - calling _initSpeech'); this._initSpeech(cs, ep) .then(() => { + if (this.killed) { + this.logger.info('Gather:exec - task was quickly killed so do not transcribe'); + return; + } this._startTranscribing(ep); return updateSpeechCredentialLastUsed(this.sttCredentials.speech_credential_sid); }) @@ -232,7 +236,13 @@ class TaskGather extends Task { } }); } - else startListening(cs, ep); + else { + if (this.killed) { + this.logger.info('Gather:exec - task was immediately killed so do not transcribe'); + return; + } + startListening(cs, ep); + } if (this.input.includes('speech') && this.listenDuringPrompt) { await this._initSpeech(cs, ep);