From: Mark Michelson Date: Fri, 22 Aug 2014 16:56:18 +0000 (+0000) Subject: Fix a locking inversion in MixMonitor. X-Git-Tag: 13.0.0-beta2~2^2~70 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=16c96760e71eb4feac55dba60b601ecf41268ea0;p=thirdparty%2Fasterisk.git Fix a locking inversion in MixMonitor. We need to unlock the audiohook before trying to lock the channel, since the correct locking order is channel then audiohook. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@421882 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/apps/app_mixmonitor.c b/apps/app_mixmonitor.c index cf7b935185..4b3da07c02 100644 --- a/apps/app_mixmonitor.c +++ b/apps/app_mixmonitor.c @@ -743,14 +743,15 @@ static void *mixmonitor_thread(void *obj) "File: %s\r\n", ast_channel_name(mixmonitor->autochan->chan), mixmonitor->filename); + + ast_audiohook_unlock(&mixmonitor->audiohook); + ast_channel_lock(mixmonitor->autochan->chan); if (ast_test_flag(mixmonitor, MUXFLAG_BEEP_STOP)) { ast_stream_and_wait(mixmonitor->autochan->chan, "beep", ""); } ast_channel_unlock(mixmonitor->autochan->chan); - ast_audiohook_unlock(&mixmonitor->audiohook); - ast_autochan_destroy(mixmonitor->autochan); /* Datastore cleanup. close the filestream and wait for ds destruction */