summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/asterisk/file.h7
-rw-r--r--main/file.c5
2 files changed, 11 insertions, 1 deletions
diff --git a/include/asterisk/file.h b/include/asterisk/file.h
index 1fc496fdb..5b795d430 100644
--- a/include/asterisk/file.h
+++ b/include/asterisk/file.h
@@ -66,9 +66,14 @@ int ast_stream_and_wait(struct ast_channel *chan, const char *file, const char *
/*!
* \brief Stops a stream
+ *
* \param c The channel you wish to stop playback on
+ *
* Stop playback of a stream
- * \return 0 regardless
+ *
+ * \retval 0 always
+ *
+ * \note The channel does not need to be locked before calling this function.
*/
int ast_stopstream(struct ast_channel *c);
diff --git a/main/file.c b/main/file.c
index be5c019de..bbdda4c38 100644
--- a/main/file.c
+++ b/main/file.c
@@ -119,6 +119,8 @@ int ast_format_unregister(const char *name)
int ast_stopstream(struct ast_channel *tmp)
{
+ ast_channel_lock(tmp);
+
/* Stop a running stream if there is one */
if (tmp->stream) {
ast_closestream(tmp->stream);
@@ -131,6 +133,9 @@ int ast_stopstream(struct ast_channel *tmp)
ast_closestream(tmp->vstream);
tmp->vstream = NULL;
}
+
+ ast_channel_unlock(tmp);
+
return 0;
}