diff --git a/main/message.c b/main/message.c index 581487fcd7..01a1c9b1cd 100644 --- a/main/message.c +++ b/main/message.c @@ -743,6 +743,7 @@ static void chan_cleanup(struct ast_channel *chan) struct ast_datastore *msg_ds, *ds; struct varshead *headp; struct ast_var_t *vardata; + struct ast_frame *cur; ast_channel_lock(chan); @@ -771,6 +772,13 @@ static void chan_cleanup(struct ast_channel *chan) ast_var_delete(vardata); } + /* + * Remove frames from read queue + */ + while ((cur = AST_LIST_REMOVE_HEAD(ast_channel_readq(chan), frame_list))) { + ast_frfree(cur); + } + /* * Restore msg datastore. */