aboutsummaryrefslogtreecommitdiffstats
path: root/main/cdr.c
diff options
context:
space:
mode:
authortilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2007-12-06 23:27:46 +0000
committertilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2007-12-06 23:27:46 +0000
commit253f4f70fb359bc584c12ff5599c61ed465da300 (patch)
tree88dc9291e1564a4b456eb64611382f6fe6f427c1 /main/cdr.c
parent21ea51e69a1895cd14e4d574ed2c54f7ddce4980 (diff)
If duration or billsec are not yet calculated, calculate them on demand.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@91617 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/cdr.c')
-rw-r--r--main/cdr.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/main/cdr.c b/main/cdr.c
index 703077036..028e0eb14 100644
--- a/main/cdr.c
+++ b/main/cdr.c
@@ -249,9 +249,9 @@ void ast_cdr_getvar(struct ast_cdr *cdr, const char *name, char **ret, char *wor
else if (!strcasecmp(name, "end"))
cdr_get_tv(cdr->end, raw ? NULL : fmt, workspace, workspacelen);
else if (!strcasecmp(name, "duration"))
- snprintf(workspace, workspacelen, "%ld", cdr->duration);
+ snprintf(workspace, workspacelen, "%ld", cdr->duration ? cdr->duration : (long)ast_tvdiff_ms(ast_tvnow(), cdr->start) / 1000);
else if (!strcasecmp(name, "billsec"))
- snprintf(workspace, workspacelen, "%ld", cdr->billsec);
+ snprintf(workspace, workspacelen, "%ld", cdr->billsec || cdr->answer.tv_sec == 0 ? cdr->billsec : (long)ast_tvdiff_ms(ast_tvnow(), cdr->answer) / 1000);
else if (!strcasecmp(name, "disposition")) {
if (raw) {
snprintf(workspace, workspacelen, "%ld", cdr->disposition);