]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Ensure that the Queue application tracks busy members in off nominal situations
authorMatthew Jordan <mjordan@digium.com>
Tue, 30 Oct 2012 02:07:32 +0000 (02:07 +0000)
committerMatthew Jordan <mjordan@digium.com>
Tue, 30 Oct 2012 02:07:32 +0000 (02:07 +0000)
There are a few code paths where the Queue application fails to count a paused
or in use queue member as being 'busy'.  This can cause callers to get stuck
in the Queue until a paused agent unpauses themselves.

(closes issue ASTERISK-20623)
Reported by: Bryan Walters
patches:
  app_queue.patch uploaded by Bryan Walters (license 5851)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@375450 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_queue.c

index 207b94072965adc75922b8ae00dfd0e42c72191d..0874bd488d964e3e3d9ccdafd9b31fdd7cab86f4 100644 (file)
@@ -3118,6 +3118,7 @@ static int ring_entry(struct queue_ent *qe, struct callattempt *tmp, int *busies
                if (qe->chan->cdr)
                        ast_cdr_busy(qe->chan->cdr);
                tmp->stillgoing = 0;
+               (*busies)++;
                return 0;
        }
 
@@ -3126,6 +3127,7 @@ static int ring_entry(struct queue_ent *qe, struct callattempt *tmp, int *busies
                if (qe->chan->cdr)
                        ast_cdr_busy(qe->chan->cdr);
                tmp->stillgoing = 0;
+               (*busies)++;
                return 0;
        }
        if (use_weight && compare_weight(qe->parent,tmp->member)) {