]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Don't consider a caller "handled" until the caller is bridged with
authorMark Michelson <mmichelson@digium.com>
Mon, 5 May 2008 21:41:34 +0000 (21:41 +0000)
committerMark Michelson <mmichelson@digium.com>
Mon, 5 May 2008 21:41:34 +0000 (21:41 +0000)
a queue member. There was too much of an opportunity for the member
to hang up (either during a delay, announcement, or overly long
agi) between the time that he answered the phone and the time when
he actually was bridged with the caller. The consequence of this
was that if the member hung up in that interval, then proper
abandonment details would not be noted in the queue log if the caller
were to hang up at any point after the member hangup.

(closes issue #12561)
Reported by: ablackthorn

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@115320 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_queue.c

index 313163576fb49e8056488498fdf808f3eca42d26..ce74c3f387dc3dcaacfacd9fc4df4bcd2eaaf3d8 100644 (file)
@@ -2791,7 +2791,6 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
                /* Ah ha!  Someone answered within the desired timeframe.  Of course after this
                   we will always return with -1 so that it is hung up properly after the
                   conversation.  */
-               qe->handled++;
                if (!strcmp(qe->chan->tech->type, "Zap"))
                        ast_channel_setoption(qe->chan, AST_OPTION_TONE_VERIFY, &nondataquality, sizeof(nondataquality), 0);
                if (!strcmp(peer->tech->type, "Zap"))
@@ -2839,7 +2838,6 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
                                /* Agent must have hung up */
                                ast_log(LOG_WARNING, "Agent on %s hungup on the customer.\n", peer->name);
                                ast_queue_log(queuename, qe->chan->uniqueid, member->membername, "AGENTDUMP", "%s", "");
-                               record_abandoned(qe);
                                if (qe->parent->eventwhencalled)
                                        manager_event(EVENT_FLAG_AGENT, "AgentDump",
                                                        "Queue: %s\r\n"
@@ -2993,6 +2991,7 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
                        } else
                                ast_log(LOG_WARNING, "Asked to execute an AGI on this channel, but could not find application (agi)!\n");
                }
+               qe->handled++;
                ast_queue_log(queuename, qe->chan->uniqueid, member->membername, "CONNECT", "%ld|%s", (long)time(NULL) - qe->start, peer->uniqueid);
                if (qe->parent->eventwhencalled)
                        manager_event(EVENT_FLAG_AGENT, "AgentConnect",