]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
app_queue: set QUEUESTATUS to LEAVEEMPTY instead of CONTINUE
authorIvan Poddubny <ivan.poddubny@gmail.com>
Sun, 12 Aug 2018 16:04:42 +0000 (18:04 +0200)
committerRichard Mudgett <rmudgett@digium.com>
Mon, 13 Aug 2018 17:44:42 +0000 (12:44 -0500)
When a call leaves a queue on leaveempty condition, QUEUESTATUS
must be set to LEAVEEMPTY, no matter whether Queue was executed with or
without the "c" (continue) option.

The regression was introduced in the fix for ASTERISK_25665.
The following fix (ASTERISK_27065) was incomplete, as QUEUESTATUS was
overwritten in case when "c" is set, regardless of what was the cause
for leaving the queue.

ASTERISK-27973 #close
Reported-by: Valentin Safonov
Change-Id: Iec013fe6a26a4e825ca572a1dda4f3cee5f6f80c

apps/app_queue.c

index f783ac94deedd7f10fff365c3b7dde2afdf85833..31580b46b4e0537f055558f0efebd5dbde622659 100644 (file)
@@ -8172,12 +8172,12 @@ stop:
                                        "%d|%d|%ld", qe.pos, qe.opos,
                                        (long) (time(NULL) - qe.start));
                                res = -1;
-                       } else if (qcontinue) {
-                               reason = QUEUE_CONTINUE;
-                               res = 0;
                        } else if (reason == QUEUE_LEAVEEMPTY) {
                                /* Return back to dialplan, don't hang up */
                                res = 0;
+                       } else if (qcontinue) {
+                               reason = QUEUE_CONTINUE;
+                               res = 0;
                        }
                } else if (qe.valid_digits) {
                        ast_queue_log(args.queuename, ast_channel_uniqueid(chan), "NONE", "EXITWITHKEY",