don't calculate a duration if the CDR wasn't started, as it will result in a

totally bogus value.  Thanks, Luigi!  :)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@13132 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.4
Russell Bryant 19 years ago
parent cb73379319
commit 62d5f5a7ea

@ -653,11 +653,12 @@ void ast_cdr_end(struct ast_cdr *cdr)
chan = !ast_strlen_zero(cdr->channel) ? cdr->channel : "<unknown>"; chan = !ast_strlen_zero(cdr->channel) ? cdr->channel : "<unknown>";
if (ast_test_flag(cdr, AST_CDR_FLAG_POSTED)) if (ast_test_flag(cdr, AST_CDR_FLAG_POSTED))
ast_log(LOG_WARNING, "CDR on channel '%s' already posted\n", chan); ast_log(LOG_WARNING, "CDR on channel '%s' already posted\n", chan);
if (ast_tvzero(cdr->start))
ast_log(LOG_WARNING, "CDR on channel '%s' has not started\n", chan);
if (ast_tvzero(cdr->end)) if (ast_tvzero(cdr->end))
cdr->end = ast_tvnow(); cdr->end = ast_tvnow();
cdr->duration = cdr->end.tv_sec - cdr->start.tv_sec; if (ast_tvzero(cdr->start))
ast_log(LOG_WARNING, "CDR on channel '%s' has not started\n", chan);
else
cdr->duration = cdr->end.tv_sec - cdr->start.tv_sec;
if (!ast_tvzero(cdr->answer)) if (!ast_tvzero(cdr->answer))
cdr->billsec = cdr->end.tv_sec - cdr->answer.tv_sec; cdr->billsec = cdr->end.tv_sec - cdr->answer.tv_sec;
else else

Loading…
Cancel
Save