Fix logic reversal error when queue callers join the queue.
authorMark Michelson <mmichelson@digium.com>
Fri, 30 Apr 2010 19:53:36 +0000 (19:53 +0000)
committerMark Michelson <mmichelson@digium.com>
Fri, 30 Apr 2010 19:53:36 +0000 (19:53 +0000)
When a specific position is specified for the queue, the idea
was that the caller cannot be placed ahead of higher-priority
callers. Unfortunately, the logic was reversed so that the caller
could ONLY be placed ahead of higher priority callers.

Discovered while writing a unit test.

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

apps/app_queue.c

index bc1ca96..6e255aa 100644 (file)
@@ -2263,7 +2263,7 @@ static int join_queue(char *queuename, struct queue_ent *qe, enum queue_result *
                        /* <= is necessary for the position comparison because it may not be possible to enter
                         * at our desired position since higher-priority callers may have taken the position we want
                         */
-                       if (!inserted && (qe->prio <= cur->prio) && position && (position <= pos + 1)) {
+                       if (!inserted && (qe->prio >= cur->prio) && position && (position <= pos + 1)) {
                                insert_entry(q, prev, qe, &pos);
                                /*pos is incremented inside insert_entry, so don't need to add 1 here*/
                                if (position < pos) {