diff --git a/main/message.c b/main/message.c index a3a86b3808..0a43667d3e 100644 --- a/main/message.c +++ b/main/message.c @@ -728,6 +728,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); @@ -756,6 +757,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. */