diff options
author | Tilghman Lesher <tilghman@meg.abyt.es> | 2007-12-06 23:27:46 +0000 |
---|---|---|
committer | Tilghman Lesher <tilghman@meg.abyt.es> | 2007-12-06 23:27:46 +0000 |
commit | 5a5f7ab2d85310c5c3d3c719c8ccaf65ca860d20 (patch) | |
tree | 88dc9291e1564a4b456eb64611382f6fe6f427c1 /main | |
parent | 0ea5f428d051002ab9b0b99defc18a6d76cc0967 (diff) |
If duration or billsec are not yet calculated, calculate them on demand.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@91617 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main')
-rw-r--r-- | main/cdr.c | 4 |
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); |