[asterisk-commits] mmichelson: trunk r368900 - in /trunk: ./ funcs/func_volume.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Wed Jun 13 16:17:17 CDT 2012


Author: mmichelson
Date: Wed Jun 13 16:17:13 2012
New Revision: 368900

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=368900
Log:
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

Modified:
    trunk/   (props changed)
    trunk/funcs/func_volume.c

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-10-merged' - no diff available.

Modified: trunk/funcs/func_volume.c
URL: http://svnview.digium.com/svn/asterisk/trunk/funcs/func_volume.c?view=diff&rev=368900&r1=368899&r2=368900
==============================================================================
--- trunk/funcs/func_volume.c (original)
+++ trunk/funcs/func_volume.c Wed Jun 13 16:17:13 2012
@@ -90,6 +90,9 @@
 	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);
 




More information about the asterisk-commits mailing list