Make sure that callers kicked from queue because of joinempty and leavewhenempty...
authorBJ Weschke <bweschke@btwtech.com>
Wed, 3 May 2006 20:47:34 +0000 (20:47 +0000)
committerBJ Weschke <bweschke@btwtech.com>
Wed, 3 May 2006 20:47:34 +0000 (20:47 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@24566 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_queue.c
doc/queuelog.txt

index 3123427..7f8c86a 100644 (file)
@@ -1960,6 +1960,7 @@ static int wait_our_turn(struct queue_ent *qe, int ringing, enum queue_result *r
                /* leave the queue if no agents, if enabled */
                if (qe->parent->leavewhenempty && (stat == QUEUE_NO_MEMBERS)) {
                        *reason = QUEUE_LEAVEEMPTY;
+                       ast_queue_log(qe->parent->name, qe->chan->uniqueid, "NONE", "EXITEMPTY", "%d|%d|%ld", qe->pos, qe->opos, (long)time(NULL) - qe->start);
                        leave_queue(qe);
                        break;
                }
@@ -1967,6 +1968,7 @@ static int wait_our_turn(struct queue_ent *qe, int ringing, enum queue_result *r
                /* leave the queue if no reachable agents, if enabled */
                if ((qe->parent->leavewhenempty == QUEUE_EMPTY_STRICT) && (stat == QUEUE_NO_REACHABLE_MEMBERS)) {
                        *reason = QUEUE_LEAVEUNAVAIL;
+                       ast_queue_log(qe->parent->name, qe->chan->uniqueid, "NONE", "EXITEMPTY", "%d|%d|%ld", qe->pos, qe->opos, (long)time(NULL) - qe->start);
                        leave_queue(qe);
                        break;
                }
@@ -2999,7 +3001,7 @@ check_turns:
                        if (res < 0) {
                                /* Record this abandoned call */
                                record_abandoned(&qe);
-                                ast_queue_log(args.queuename, chan->uniqueid, "NONE", "ABANDON", "%d|%d|%ld", qe.pos, qe.opos, (long)time(NULL) - qe.start);
+                               ast_queue_log(args.queuename, chan->uniqueid, "NONE", "ABANDON", "%d|%d|%ld", qe.pos, qe.opos, (long)time(NULL) - qe.start);
                                if (option_verbose > 2) {
                                        ast_verbose(VERBOSE_PREFIX_3 "User disconnected from queue %s while waiting their turn\n", args.queuename);
                                }
index aa6365e..fa8cb48 100644 (file)
@@ -61,6 +61,14 @@ ENTERQUEUE(url|callerid)
 A call has entered the queue.  URL (if specified) and Caller*ID are placed
 in the log.
 
+EXITEMPTY(position|origposition|waittime)
+The caller was exited from the queue forcefully because the queue had no
+reachable members and it's configured to do that to callers when there
+are no reachable members. The position is the caller's position in the
+queue when they hungup, the origposition is the original position the 
+caller was when they first entered the queue, and the waittime is how 
+long the call had been waiting in the queue at the time of disconnect.
+
 EXITWITHKEY(key|position)
 The caller elected to use a menu key to exit the queue.  The key and
 the caller's position in the queue are recorded.