summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Colp <jcolp@digium.com>2009-04-23 19:15:30 +0000
committerJoshua Colp <jcolp@digium.com>2009-04-23 19:15:30 +0000
commit80b8d3437717ec52af9eed3988ec07b7d6a5793b (patch)
tree677e0b8ac58e87d597e8ab418db31070e62d08cc
parent8f81deab251275241fe73057f338ae079d59e0e8 (diff)
Merged revisions 190286 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r190286 | file | 2009-04-23 16:13:18 -0300 (Thu, 23 Apr 2009) | 6 lines Fix a bug in chan_local glare hangup detection. If both sides of a Local channel were hung up at around the same time it was possible for one thread to destroy the local private structure and have the other thread immediately try to remove the already freed structure from the local channel list. ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@190287 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r--channels/chan_local.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/channels/chan_local.c b/channels/chan_local.c
index 8ecdf6953..5518a7155 100644
--- a/channels/chan_local.c
+++ b/channels/chan_local.c
@@ -688,13 +688,10 @@ static int local_hangup(struct ast_channel *ast)
let local_queue do it. */
if (glaredetect)
ast_set_flag(p, LOCAL_CANCEL_QUEUE);
- ast_mutex_unlock(&p->lock);
/* Remove from list */
AST_LIST_LOCK(&locals);
AST_LIST_REMOVE(&locals, p, list);
AST_LIST_UNLOCK(&locals);
- /* Grab / release lock just in case */
- ast_mutex_lock(&p->lock);
ast_mutex_unlock(&p->lock);
/* And destroy */
if (!glaredetect) {