From: Tilghman Lesher Date: Fri, 2 Jul 2010 15:46:27 +0000 (+0000) Subject: If all members are paused, the wrong status is indicated. X-Git-Tag: 1.4.35-rc1~45 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=358159c2b07338925e7f4ee9b31d9b472034aac0;p=thirdparty%2Fasterisk.git If all members are paused, the wrong status is indicated. (closes issue #17576) Reported by: ramonpeek Patches: diff.txt uploaded by ramonpeek (license 266) Tested by: ramonpeek git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@273639 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/apps/app_queue.c b/apps/app_queue.c index 7690fedc99..b937266ae4 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -574,6 +574,7 @@ 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; ao2_lock(q); mem_iter = ao2_iterator_init(q->members, 0); @@ -586,6 +587,8 @@ static enum queue_member_status get_member_status(struct call_queue *q, int max_ if (member->paused) { ao2_ref(member, -1); continue; + } else { + allpaused = 0; } switch (member->status) { @@ -605,6 +608,10 @@ 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; + } return result; }