]> 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:45:00 +0000 (12:45 -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 c2962db2bfd9712d16092f5ebfca60c03d7c8de0..bae49f49052b7bb1a5340d5afa355e6b43e95f93 100644 (file)
@@ -8359,12 +8359,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",