diff --git a/include/asterisk/file.h b/include/asterisk/file.h index 4e7c505d85..4fade8eb33 100644 --- a/include/asterisk/file.h +++ b/include/asterisk/file.h @@ -80,6 +80,7 @@ int ast_streamfile(struct ast_channel *c, const char *filename, const char *pref * \brief stream file until digit * If the file name is non-empty, try to play it. * \note If digits == "" then we can simply check for non-zero. + * \note If a failure is encountered, the stream will be closed before returning. * \retval 0 if success. * \retval -1 if error. * \retval digit if interrupted by a digit. diff --git a/main/file.c b/main/file.c index 972f2340f2..d7c75430bb 100644 --- a/main/file.c +++ b/main/file.c @@ -1862,6 +1862,10 @@ int ast_stream_and_wait(struct ast_channel *chan, const char *file, const char * res = ast_waitstream(chan, digits); } } + if (res == -1) { + ast_stopstream(chan); + } + return res; }