diff --git a/main/message.c b/main/message.c index 581487fcd70c820499fe6240c36b2c3f7f742780..01a1c9b1cd5f72344e5068621f148cc3abd90322 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. */