diff options
Diffstat (limited to 'apps/app_queue.c')
-rw-r--r-- | apps/app_queue.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/apps/app_queue.c b/apps/app_queue.c index 030dab001..d9df46fb8 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -3757,21 +3757,24 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce /* If the queue member did an attended transfer, then the TRANSFER already was logged in the queue_log * when the masquerade occurred. These other "ending" queue_log messages are unnecessary */ - if (!attended_transfer_occurred(qe->chan)) { + if (bridge != AST_PBX_KEEPALIVE && !attended_transfer_occurred(qe->chan)) { struct ast_datastore *transfer_ds; if (strcasecmp(oldcontext, qe->chan->context) || strcasecmp(oldexten, qe->chan->exten)) { ast_queue_log(queuename, qe->chan->uniqueid, member->membername, "TRANSFER", "%s|%s|%ld|%ld|%d", qe->chan->exten, qe->chan->context, (long) (callstart - qe->start), (long) (time(NULL) - callstart), qe->opos); - send_agent_complete(qe, queuename, peer, member, callstart, vars, sizeof(vars), TRANSFER); + if (bridge != AST_PBX_NO_HANGUP_PEER && bridge != AST_PBX_NO_HANGUP_PEER_PARKED) + send_agent_complete(qe, queuename, peer, member, callstart, vars, sizeof(vars), TRANSFER); } else if (ast_check_hangup(qe->chan)) { ast_queue_log(queuename, qe->chan->uniqueid, member->membername, "COMPLETECALLER", "%ld|%ld|%d", (long) (callstart - qe->start), (long) (time(NULL) - callstart), qe->opos); - send_agent_complete(qe, queuename, peer, member, callstart, vars, sizeof(vars), CALLER); + if (bridge != AST_PBX_NO_HANGUP_PEER && bridge != AST_PBX_NO_HANGUP_PEER_PARKED) + send_agent_complete(qe, queuename, peer, member, callstart, vars, sizeof(vars), CALLER); } else { ast_queue_log(queuename, qe->chan->uniqueid, member->membername, "COMPLETEAGENT", "%ld|%ld|%d", (long) (callstart - qe->start), (long) (time(NULL) - callstart), qe->opos); - send_agent_complete(qe, queuename, peer, member, callstart, vars, sizeof(vars), AGENT); + if (bridge != AST_PBX_NO_HANGUP_PEER && bridge != AST_PBX_NO_HANGUP_PEER_PARKED) + send_agent_complete(qe, queuename, peer, member, callstart, vars, sizeof(vars), AGENT); } ast_channel_lock(qe->chan); transfer_ds = ast_channel_datastore_find(qe->chan, &queue_transfer_info, NULL); @@ -3783,7 +3786,7 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce update_queue(qe->parent, member, callcompletedinsl); } - if (bridge != AST_PBX_NO_HANGUP_PEER) + if (bridge != AST_PBX_NO_HANGUP_PEER && bridge != AST_PBX_NO_HANGUP_PEER_PARKED) ast_hangup(peer); res = bridge ? bridge : 1; ao2_ref(member, -1); |