diff --git a/channels/chan_alsa.c b/channels/chan_alsa.c index 8a3c1198b7..2bbc74d6a2 100644 --- a/channels/chan_alsa.c +++ b/channels/chan_alsa.c @@ -482,6 +482,13 @@ static struct ast_frame *alsa_read(struct ast_channel *chan) } else if (r >= 0) { off -= r; } + + /* Return NULL frame on error */ + if (r < 0) { + ast_mutex_unlock(&alsalock); + return &f; + } + /* Update positions */ readpos += r; left -= r;