diff options
-rw-r--r-- | main/channel.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/main/channel.c b/main/channel.c index 1ba4f1a24..83b6590fc 100644 --- a/main/channel.c +++ b/main/channel.c @@ -1844,9 +1844,11 @@ static void ast_channel_destructor(void *obj) ast_cel_check_retire_linkedid(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_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) */ |