diff --git a/apps/app_queue.c b/apps/app_queue.c index fb919f1072..06e9a913c8 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -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);