summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorSungtae Kim <pchero21@gmail.com>2017-08-17 23:46:49 +0200
committersungtae kim <pchero21@gmail.com>2017-08-22 08:27:47 -0500
commitb88c3a42097121ea354ea3a365faba1b97e72dd6 (patch)
treee877babda38393990e4aabbbde1ae2022fbda5c5 /apps
parent71753d67f4d4cd2df6105018e4fa0ff9fbcfc5f4 (diff)
app_queue: Fix initial hold time queue statistic
Fixed to use correct initial value and fixed to use the correct queue info to check the first value. ASTERISK-27204 Change-Id: Ia9e36c828e566e1cc25c66f73307566e4acb8e73
Diffstat (limited to 'apps')
-rw-r--r--apps/app_queue.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/apps/app_queue.c b/apps/app_queue.c
index 91c8d61fc..678b4a737 100644
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -3975,8 +3975,12 @@ static void recalc_holdtime(struct queue_ent *qe, int newholdtime)
/* 2^2 (4) is the filter coefficient; a higher exponent would give old entries more weight */
ao2_lock(qe->parent);
- oldvalue = qe->parent->holdtime;
- qe->parent->holdtime = (((oldvalue << 2) - oldvalue) + newholdtime) >> 2;
+ if ((qe->parent->callscompleted + qe->parent->callsabandoned) == 0) {
+ qe->parent->holdtime = newholdtime;
+ } else {
+ oldvalue = qe->parent->holdtime;
+ qe->parent->holdtime = (((oldvalue << 2) - oldvalue) + newholdtime) >> 2;
+ }
ao2_unlock(qe->parent);
}
@@ -5527,7 +5531,7 @@ static int update_queue(struct call_queue *q, struct member *member, int callcom
if (callcompletedinsl) {
q->callscompletedinsl++;
}
- if (q->callscompletedinsl == 1) {
+ if (q->callscompleted == 1) {
q->talktime = newtalktime;
} else {
/* Calculate talktime using the same exponential average as holdtime code */