From 3584e1699d57cce9c3a84c35175e8cf76de3c2ec Mon Sep 17 00:00:00 2001 From: Grzegorz Sluja Date: Thu, 15 Jul 2021 08:31:43 +0200 Subject: [PATCH] VoiceService: Fix for unanswered incoming call log record Signed-off-by: Grzegorz Sluja --- dmtree/tr104/common.c | 283 +++++++++++++++++++++--------------------- 1 file changed, 143 insertions(+), 140 deletions(-) diff --git a/dmtree/tr104/common.c b/dmtree/tr104/common.c index 87c08a94..ce727e6a 100644 --- a/dmtree/tr104/common.c +++ b/dmtree/tr104/common.c @@ -276,168 +276,171 @@ int init_call_log() end = strstr(token, ","); CHECK_RESULT(end); strncpy(cdr.localBurstDensity, token, end - token); + // for incoming unanswered call cdr does not contain RTP stats + if (strcasecmp(cdr.localBurstDensity, "\"DOCUMENTATION\"") == 0) { + cdr.localBurstDensity[0] = '\0'; + } else { + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.remoteBurstDensity, token, end - token); - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.remoteBurstDensity, token, end - token); + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.localBurstDuration, token, end - token); - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.localBurstDuration, token, end - token); + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.remoteBurstDuration, token, end - token); - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.remoteBurstDuration, token, end - token); + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.localGapDensity, token, end - token); - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.localGapDensity, token, end - token); + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.remoteGapDensity, token, end - token); - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.remoteGapDensity, token, end - token); + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.localGapDuration, token, end - token); - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.localGapDuration, token, end - token); + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.remoteGapDuration, token, end - token); - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.remoteGapDuration, token, end - token); + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.localJbRate, token, end - token); - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.localJbRate, token, end - token); + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.remoteJbRate, token, end - token); - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.remoteJbRate, token, end - token); + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.localJbMax, token, end - token); - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.localJbMax, token, end - token); + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.remoteJbMax, token, end - token); - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.remoteJbMax, token, end - token); + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.localJbNominal, token, end - token); - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.localJbNominal, token, end - token); + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.remoteJbNominal, token, end - token); - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.remoteJbNominal, token, end - token); + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.localJbAbsMax, token, end - token); - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.localJbAbsMax, token, end - token); + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.remoteJbAbsMax, token, end - token); - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.remoteJbAbsMax, token, end - token); + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.jbAvg, token, end - token); - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.jbAvg, token, end - token); + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.uLossRate, token, end - token); - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.uLossRate, token, end - token); + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.discarded, token, end - token); - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.discarded, token, end - token); + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.lost, token, end - token); - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.lost, token, end - token); + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.rxpkts, token, end - token); - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.rxpkts, token, end - token); + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.txpkts, token, end - token); - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.txpkts, token, end - token); - - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.jitter, token, end - token); - - token = strstr(token, ","); - CHECK_RESULT(token); - token += 1; - end = strstr(token, ","); - CHECK_RESULT(end); - strncpy(cdr.maxJitter, token, end - token); + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.jitter, token, end - token); + token = strstr(token, ","); + CHECK_RESULT(token); + token += 1; + end = strstr(token, ","); + CHECK_RESULT(end); + strncpy(cdr.maxJitter, token, end - token); + } // Skip invalid call logs if (cdr.calling_num[0] == '\0' || cdr.called_num[0] == '\0' || cdr.start_time[0] == '\0' || end_time[0] == '\0') {