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
"%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",