From afc33139c429c279acc0a1b1167750b616549122 Mon Sep 17 00:00:00 2001 From: Mark Spencer Date: Sun, 13 Feb 2005 16:53:29 +0000 Subject: [PATCH] Properly differentiate between caller and agent hangups (bug #3578) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5018 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- apps/app_queue.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/apps/app_queue.c b/apps/app_queue.c index a12cf6899d..d758484724 100755 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -1557,7 +1557,7 @@ static int try_calling(struct queue_ent *qe, char *ooptions, char *announceoverr } } res2 |= ast_autoservice_stop(qe->chan); - if (res2) { + if (peer->_softhangup) { /* Agent must have hung up */ ast_log(LOG_WARNING, "Agent on %s hungup on the customer. They're going to be pissed.\n", peer->name); ast_queue_log(queuename, qe->chan->uniqueid, peer->name, "AGENTDUMP", "%s", ""); @@ -1570,6 +1570,13 @@ static int try_calling(struct queue_ent *qe, char *ooptions, char *announceoverr queuename, qe->chan->uniqueid, peer->name, member->interface); } ast_hangup(peer); + goto out; + } else if (res2) { + /* Caller must have hung up just before being connected*/ + ast_log(LOG_NOTICE, "Caller was about to talk to agent on %s but the caller hungup.\n", peer->name); + ast_queue_log(queuename, qe->chan->uniqueid, peer->name, "ABANDON", "%d|%d|%ld", qe->pos, qe->opos, (long)time(NULL) - qe->start); + record_abandoned(qe); + ast_hangup(peer); return -1; } }