aboutsummaryrefslogtreecommitdiffstats
path: root/cdr.c
diff options
context:
space:
mode:
authoranthm <anthm@f38db490-d61c-443f-a65b-d21fe96a405b>2004-09-24 21:33:48 +0000
committeranthm <anthm@f38db490-d61c-443f-a65b-d21fe96a405b>2004-09-24 21:33:48 +0000
commit6ffda996af2f5261775610a416e5146d5d394f4f (patch)
tree9dc1614246c2f8319edee2064d5efe8b24880b6a /cdr.c
parentce99091f34f4409c251d35d603e027311521d96e (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-xcdr.c30
1 files changed, 17 insertions, 13 deletions
diff --git a/cdr.c b/cdr.c
index 8057fa1aa..f4e97efce 100755
--- a/cdr.c
+++ b/cdr.c
@@ -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) {