app_queue: Fix returning to dialplan when a queue is empty
authorIvan Poddubny <ivan.poddubny@gmail.com>
Tue, 27 Jun 2017 09:37:11 +0000 (11:37 +0200)
committerIvan Poddubny <ivan.poddubny@gmail.com>
Tue, 27 Jun 2017 09:54:06 +0000 (11:54 +0200)
The fix for ASTERISK-25665 introduced a regression.
The return value of queue_exec used to be 0 in case of leavewhenempty
but it was changed to -1 (returned from wait_our_turn and passed
transparently by queue_exec), thus leading to hangup instead of returning
back to dialplan.

This commit resets the value back to 0 in this case, restoring
original behavior.

ASTERISK-27065 #close
Reported by: Marek Cervenka

Change-Id: Id9c83b75aeda463250155e88c5004be52bbca5ac

apps/app_queue.c

index f158a4c..b306af1 100644 (file)
@@ -8301,6 +8301,9 @@ stop:
                        } 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 (qe.valid_digits) {
                        ast_queue_log(args.queuename, ast_channel_uniqueid(chan), "NONE", "EXITWITHKEY",