diff --git a/main/channel.c b/main/channel.c index 8addc0d629..a4ffd629d3 100644 --- a/main/channel.c +++ b/main/channel.c @@ -1286,9 +1286,11 @@ void ast_channel_free(struct ast_channel *chan) } /* Get rid of each of the data stores on the channel */ + ast_channel_lock(chan); while ((datastore = AST_LIST_REMOVE_HEAD(&chan->datastores, entry))) /* Free the data store */ ast_channel_datastore_free(datastore); + ast_channel_unlock(chan); /* Lock and unlock the channel just to be sure nobody has it locked still due to a reference that was stored in a datastore. (i.e. app_chanspy) */