From 51b800f40a664581ab3974ce5e1ebbf963b7669a Mon Sep 17 00:00:00 2001 From: Mark Spencer Date: Sat, 9 Aug 2003 19:04:03 +0000 Subject: [PATCH] Fix round robin scheduling git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1280 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- apps/app_queue.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/apps/app_queue.c b/apps/app_queue.c index cddf31165a..8417833a90 100755 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -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;