summaryrefslogtreecommitdiff
path: root/devicestate.c
diff options
context:
space:
mode:
authorMark Spencer <markster@digium.com>2005-07-10 12:09:40 +0000
committerMark Spencer <markster@digium.com>2005-07-10 12:09:40 +0000
commit3c8dfe099d2d7156ff85bdc3c09a4399173fb670 (patch)
tree3804b425ee4fb8391453e9a9e1c1589294e99b85 /devicestate.c
parentb4f7592ebbd65d7b460bcb8d282aadce1fde199f (diff)
Fix lock ordering in devicestate
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6069 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'devicestate.c')
-rwxr-xr-xdevicestate.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/devicestate.c b/devicestate.c
index 4641f9549..621e8f1fd 100755
--- a/devicestate.c
+++ b/devicestate.c
@@ -184,12 +184,14 @@ int ast_device_state_changed(const char *fmt, ...)
AST_LIST_LOCK(&state_changes);
AST_LIST_INSERT_TAIL(&state_changes, change, list);
if (AST_LIST_FIRST(&state_changes) == change) {
+ AST_LIST_UNLOCK(&state_changes);
/* the list was empty, signal the thread */
ast_mutex_lock(&change_pending_lock);
pthread_cond_signal(&change_pending);
ast_mutex_unlock(&change_pending_lock);
+ } else {
+ AST_LIST_UNLOCK(&state_changes);
}
- AST_LIST_UNLOCK(&state_changes);
}
return 1;