summaryrefslogtreecommitdiff
path: root/cdr.c
diff options
context:
space:
mode:
authorRussell Bryant <russell@russellbryant.com>2006-03-14 16:49:34 +0000
committerRussell Bryant <russell@russellbryant.com>2006-03-14 16:49:34 +0000
commit4e6af293f9f5a0ecc8d1e62284b128e23d799970 (patch)
tree7273f74c1ece370bc512199dd9d468648ed255a5 /cdr.c
parentd3527e5020db165144ccc858ca7e969eb33e1762 (diff)
add an option to cdr.conf that enables ending CDRs before executing
the "h" extension as opposed to afterwards (issue #6193) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@12896 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'cdr.c')
-rw-r--r--cdr.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/cdr.c b/cdr.c
index ce908d82f..58c5e02db 100644
--- a/cdr.c
+++ b/cdr.c
@@ -657,6 +657,11 @@ void ast_cdr_end(struct ast_cdr *cdr)
ast_log(LOG_WARNING, "CDR on channel '%s' has not started\n", chan);
if (ast_tvzero(cdr->end))
cdr->end = ast_tvnow();
+ cdr->duration = cdr->end.tv_sec - cdr->start.tv_sec + (cdr->end.tv_usec - cdr->start.tv_usec) / 1000000;
+ if (!ast_tvzero(cdr->answer))
+ cdr->billsec = cdr->end.tv_sec - cdr->answer.tv_sec + (cdr->end.tv_usec - cdr->answer.tv_usec) / 1000000;
+ else
+ cdr->billsec = 0;
cdr = cdr->next;
}
}
@@ -804,11 +809,6 @@ static void post_cdr(struct ast_cdr *cdr)
ast_log(LOG_WARNING, "CDR on channel '%s' lacks end\n", chan);
if (ast_tvzero(cdr->start))
ast_log(LOG_WARNING, "CDR on channel '%s' lacks start\n", chan);
- cdr->duration = cdr->end.tv_sec - cdr->start.tv_sec + (cdr->end.tv_usec - cdr->start.tv_usec) / 1000000;
- if (!ast_tvzero(cdr->answer))
- cdr->billsec = cdr->end.tv_sec - cdr->answer.tv_sec + (cdr->end.tv_usec - cdr->answer.tv_usec) / 1000000;
- else
- cdr->billsec = 0;
ast_set_flag(cdr, AST_CDR_FLAG_POSTED);
AST_LIST_LOCK(&be_list);
AST_LIST_TRAVERSE(&be_list, i, list) {
@@ -1121,6 +1121,7 @@ static int do_reload(void)
const char *batchsafeshutdown_value;
const char *size_value;
const char *time_value;
+ const char *end_before_h_value;
int cfg_size;
int cfg_time;
int was_enabled;
@@ -1171,6 +1172,8 @@ static int do_reload(void)
else
batchtime = cfg_time;
}
+ if ((end_before_h_value = ast_variable_retrieve(config, "general", "endbeforehexten")))
+ ast_set2_flag(&ast_options, ast_true(end_before_h_value), AST_OPT_END_CDR_BEFORE_H_EXTEN);
}
if (enabled && !batchmode) {