]> 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:22:20 +0000 (02:22 +0000)
committerMatthew Jordan <mjordan@digium.com>
Tue, 30 Oct 2012 02:22:20 +0000 (02:22 +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)
........

Merged revisions 375450 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 375451 from http://svn.asterisk.org/svn/asterisk/branches/10

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

apps/app_queue.c

index 35f49fe898d79ad2373d50b1c18fdbdd9aba25e8..40dd87d4167b7da27a74a6e5633479c6095196cc 100644 (file)
@@ -3518,6 +3518,7 @@ static int ring_entry(struct queue_ent *qe, struct callattempt *tmp, int *busies
                        ast_cdr_busy(ast_channel_cdr(qe->chan));
                }
                tmp->stillgoing = 0;
+               (*busies)++;
                return 0;
        }
 
@@ -3548,6 +3549,7 @@ static int ring_entry(struct queue_ent *qe, struct callattempt *tmp, int *busies
                                ast_cdr_busy(ast_channel_cdr(qe->chan));
                        }
                        tmp->stillgoing = 0;
+                       (*busies)++;
                        return 0;
                }
        }