X-Git-Url: http://git.asterisk.org/gitweb/?p=asterisk%2Fasterisk.git;a=blobdiff_plain;f=main%2Fcdr.c;h=7847dc4562973f84a863a20d9bb038424474ca4f;hp=3fc8ef1decf71c6d472baa2b3ae1e65f5e1c805e;hb=bebdbf33819aad5b7bf181f3fddd2fb25bea59b1;hpb=e0883154cffeec8d6b73c01c34c81a94cc5f05a6 diff --git a/main/cdr.c b/main/cdr.c index 3fc8ef1..7847dc4 100644 --- a/main/cdr.c +++ b/main/cdr.c @@ -301,9 +301,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->end.tv_sec != 0 ? 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) {