From: Sungtae Kim Date: Thu, 17 Aug 2017 21:46:49 +0000 (+0200) Subject: app_queue: Fix initial hold time queue statistic X-Git-Tag: 13.18.0-rc1~86 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b88c3a42097121ea354ea3a365faba1b97e72dd6;p=thirdparty%2Fasterisk.git 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 --- diff --git a/apps/app_queue.c b/apps/app_queue.c index 91c8d61fcb..678b4a7372 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 */