diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-07-10 12:09:40 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-07-10 12:09:40 +0000 |
commit | 8279b682e0d9766beeeca83a43c4522a75e64685 (patch) | |
tree | 3804b425ee4fb8391453e9a9e1c1589294e99b85 /devicestate.c | |
parent | 4ad4095bec72def3b0b77fd70b9121b6e8604485 (diff) |
Fix lock ordering in devicestate
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6069 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'devicestate.c')
-rwxr-xr-x | devicestate.c | 4 |
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; |