Fix round robin scheduling
authorMark Spencer <markster@digium.com>
Sat, 9 Aug 2003 19:04:03 +0000 (19:04 +0000)
committerMark Spencer <markster@digium.com>
Sat, 9 Aug 2003 19:04:03 +0000 (19:04 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1280 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_queue.c

index cddf311..8417833 100755 (executable)
@@ -632,18 +632,22 @@ static int calc_metric(struct ast_call_queue *q, struct member *mem, int pos, st
                break;
        case QUEUE_STRATEGY_ROUNDROBIN:
                if (!pos) {
-                       /* rrpos > number of queue entries */
-                       if (!q->wrapped)
-                               q->rrpos = 1;
-                       else
+                       if (!q->wrapped) {
+                               /* No more channels, start over */
+                               q->rrpos = 0;
+                       } else {
+                               /* Prioritize next entry */
                                q->rrpos++;
+                       }
                        q->wrapped = 0;
                }
                if (pos < q->rrpos) {
                        tmp->metric = 1000 + pos;
                } else {
-                       if (pos > q->rrpos)
+                       if (pos > q->rrpos) {
+                               /* Indicate there is another priority */
                                q->wrapped = 1;
+                       }
                        tmp->metric = pos;
                }
                tmp->metric += mem->penalty * 1000000;