From: Matthew Jordan Date: Fri, 24 Aug 2012 13:49:40 +0000 (+0000) Subject: Merge r369351 for AST-883 X-Git-Tag: certified/1.8.11-cert6~3^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=21e4a262bf6ac56628a6312b392df6e05eaa4112;p=thirdparty%2Fasterisk.git Merge r369351 for AST-883 git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.11@371650 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/cdr.c b/main/cdr.c index f4d2b086df..dc1a2b7610 100644 --- a/main/cdr.c +++ b/main/cdr.c @@ -289,9 +289,9 @@ void ast_cdr_getvar(struct ast_cdr *cdr, const char *name, char **ret, char *wor cdr_get_tv(cdr->answer, raw ? NULL : fmt, workspace, workspacelen); 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 ? cdr->duration : (long)ast_tvdiff_ms(ast_tvnow(), cdr->start) / 1000); - else if (!strcasecmp(name, "billsec")) + else if (!strcasecmp(name, "duration")) { + snprintf(workspace, workspacelen, "%ld", cdr->duration || !ast_tvzero(cdr->end) ? cdr->duration : (long)ast_tvdiff_ms(ast_tvnow(), cdr->start) / 1000); + } else if (!strcasecmp(name, "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) {