mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-02 19:16:15 +00:00
Fix a deadlock that occurs when func_volume is used on a local channel.
This was discovered by trying to perform a call forward to an extension that makes use of func_volume. When the local channel is optimized away, the datastore on the local;2 channel would have its audiohook destroyed rather than detaching the audiohook from the channel and then destroying it. With this patch, func_volume's datastore destructor takes the proper route of detaching the audiohook and then destroying it. (closes issue ASTERISK-19611) reported by Volker Sauer Patches: ASTERISK-19611.patch uploaded by Mark Michelson (license #5049) ........ Merged revisions 368898 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 368899 from http://svn.asterisk.org/svn/asterisk/branches/10 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@368900 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -90,6 +90,9 @@ static void destroy_callback(void *data)
|
||||
struct volume_information *vi = data;
|
||||
|
||||
/* Destroy the audiohook, and destroy ourselves */
|
||||
ast_audiohook_lock(&vi->audiohook);
|
||||
ast_audiohook_detach(&vi->audiohook);
|
||||
ast_audiohook_unlock(&vi->audiohook);
|
||||
ast_audiohook_destroy(&vi->audiohook);
|
||||
ast_free(vi);
|
||||
|
||||
|
Reference in New Issue
Block a user