diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/app_speech_utils.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/apps/app_speech_utils.c b/apps/app_speech_utils.c index 3342d4c31..b430a4094 100644 --- a/apps/app_speech_utils.c +++ b/apps/app_speech_utils.c @@ -544,8 +544,11 @@ static int speech_background(struct ast_channel *chan, void *data) if (argc > 0) { /* Yay sound file */ filename_tmp = ast_strdupa(argv[0]); - if (argv[1] != NULL) - timeout = atoi(argv[1]); + if (!ast_strlen_zero(argv[1])) { + if ((timeout = atoi(argv[1])) == 0) + timeout = -1; + } else + timeout = 0; } /* Before we go into waiting for stuff... make sure the structure is ready, if not - start it again */ @@ -611,7 +614,13 @@ static int speech_background(struct ast_channel *chan, void *data) /* If audio playback has stopped do a check for timeout purposes */ if (chan->streamid == -1 && chan->timingfunc == NULL) ast_stopstream(chan); - if (!quieted && chan->stream == NULL && timeout > 0 && started == 0 && !filename_tmp) { + if (!quieted && chan->stream == NULL && timeout && started == 0 && !filename_tmp) { + if (timeout == -1) { + done = 1; + if (f) + ast_frfree(f); + break; + } time(&start); started = 1; } |