diff options
author | anthm <anthm@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-09-24 21:33:48 +0000 |
---|---|---|
committer | anthm <anthm@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-09-24 21:33:48 +0000 |
commit | 6ffda996af2f5261775610a416e5146d5d394f4f (patch) | |
tree | 9dc1614246c2f8319edee2064d5efe8b24880b6a /cdr.c | |
parent | ce99091f34f4409c251d35d603e027311521d96e (diff) |
add app_forkcdr
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@3832 f38db490-d61c-443f-a65b-d21fe96a405b
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) { |