diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/app_queue.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/apps/app_queue.c b/apps/app_queue.c index b937266ae..88d120222 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -574,11 +574,13 @@ static enum queue_member_status get_member_status(struct call_queue *q, int max_ struct member *member; struct ao2_iterator mem_iter; enum queue_member_status result = QUEUE_NO_MEMBERS; - int allpaused = 1; + int allpaused = 1, empty = 1; ao2_lock(q); mem_iter = ao2_iterator_init(q->members, 0); while ((member = ao2_iterator_next(&mem_iter))) { + empty = 0; + if (max_penalty && (member->penalty > max_penalty)) { ao2_ref(member, -1); continue; @@ -609,9 +611,9 @@ static enum queue_member_status get_member_status(struct call_queue *q, int max_ ao2_iterator_destroy(&mem_iter); ao2_unlock(q); - if (allpaused) { - result = QUEUE_NO_REACHABLE_MEMBERS; - } + if (!empty && allpaused) { + result = QUEUE_NO_REACHABLE_MEMBERS; + } return result; } |