From 16c96760e71eb4feac55dba60b601ecf41268ea0 Mon Sep 17 00:00:00 2001 From: Mark Michelson Date: Fri, 22 Aug 2014 16:56:18 +0000 Subject: [PATCH] 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 --- apps/app_mixmonitor.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 */