Fixed issue where 'stop gracfeully' was hanging ...
authorBrett Bryant <bbryant@digium.com>
Mon, 18 Jun 2007 22:23:51 +0000 (22:23 +0000)
committerBrett Bryant <bbryant@digium.com>
Mon, 18 Jun 2007 22:23:51 +0000 (22:23 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@69807 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_queue.c

index fb919f1..06e9a91 100644 (file)
@@ -628,14 +628,17 @@ static void *device_state_thread(void *data)
 
        while (!device_state.stop) {
                ast_mutex_lock(&device_state.lock);
-               while (!(sc = AST_LIST_REMOVE_HEAD(&device_state.state_change_q, entry)))
-                       ast_cond_wait(&device_state.cond, &device_state.lock);
+               ast_cond_wait(&device_state.cond, &device_state.lock);
+               sc = AST_LIST_REMOVE_HEAD(&device_state.state_change_q, entry);
                ast_mutex_unlock(&device_state.lock);
 
                /* Check to see if we were woken up to see the request to stop */
                if (device_state.stop)
                        return NULL;
 
+               if (!sc)
+                       continue;
+
                handle_statechange(sc);
 
                free(sc);