diff options
author | Anthony Minessale II <anthmct@yahoo.com> | 2004-09-24 21:33:48 +0000 |
---|---|---|
committer | Anthony Minessale II <anthmct@yahoo.com> | 2004-09-24 21:33:48 +0000 |
commit | 255ce936167f0735871f09e0af89615243a3516f (patch) | |
tree | 9dc1614246c2f8319edee2064d5efe8b24880b6a /cdr.c | |
parent | 4ffa6c246f614a3b01731f4215b3cb7ad5ed987f (diff) |
add app_forkcdr
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3832 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'cdr.c')
-rwxr-xr-x | cdr.c | 30 |
1 files changed, 17 insertions, 13 deletions
@@ -499,25 +499,29 @@ void ast_cdr_post(struct ast_cdr *cdr) } } -void ast_cdr_reset(struct ast_cdr *cdr, int post) +void ast_cdr_reset(struct ast_cdr *cdr, int flags) { while (cdr) { /* Post if requested */ - if (post) { - ast_cdr_end(cdr); - ast_cdr_post(cdr); + if (ast_cdr_compare_flag(flags,AST_CDR_FLAG_LOCKED) || !ast_cdr_has_flag(cdr,AST_CDR_FLAG_LOCKED)) { + if (ast_cdr_compare_flag(flags,AST_CDR_FLAG_POSTED)) { + ast_cdr_end(cdr); + ast_cdr_post(cdr); + } + /* Reset to initial state */ + cdr->flags=0; + memset(&cdr->start, 0, sizeof(cdr->start)); + memset(&cdr->end, 0, sizeof(cdr->end)); + memset(&cdr->answer, 0, sizeof(cdr->answer)); + cdr->billsec = 0; + cdr->duration = 0; + ast_cdr_start(cdr); + cdr->disposition = AST_CDR_NOANSWER; } - /* Reset to initial state */ - cdr->flags=0; - memset(&cdr->start, 0, sizeof(cdr->start)); - memset(&cdr->end, 0, sizeof(cdr->end)); - memset(&cdr->answer, 0, sizeof(cdr->answer)); - cdr->billsec = 0; - cdr->duration = 0; - ast_cdr_start(cdr); - cdr->disposition = AST_CDR_NOANSWER; + cdr = cdr->next; } + } void ast_cdr_append(struct ast_cdr *cdr, struct ast_cdr *newcdr) { |