aboutsummaryrefslogtreecommitdiffstats
path: root/main/cdr.c
diff options
context:
space:
mode:
authormurf <murf@f38db490-d61c-443f-a65b-d21fe96a405b>2007-06-22 14:10:24 +0000
committermurf <murf@f38db490-d61c-443f-a65b-d21fe96a405b>2007-06-22 14:10:24 +0000
commit166cd282d00488e747d4e2765ae18f4842d07f80 (patch)
tree5b2a519035e45917bb690ee18a977b428d7e5c93 /main/cdr.c
parentfe83e15e55858087ce630e70c795800509ad6fa1 (diff)
My conditions for merging amaflags info was naive; DOCUMENTATION is the default, although null is possible; theft of user-settable fields is not good. Just copy them, leave them alone.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@71063 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/cdr.c')
-rw-r--r--main/cdr.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/main/cdr.c b/main/cdr.c
index 54aab40a5..5c2f9cb3d 100644
--- a/main/cdr.c
+++ b/main/cdr.c
@@ -576,17 +576,18 @@ void ast_cdr_merge(struct ast_cdr *to, struct ast_cdr *from)
ast_copy_string(to->dst, from->dst, sizeof(to->dst));
from->dst[0] = 0; /* theft */
}
- if (ast_test_flag(from, AST_CDR_FLAG_LOCKED) || (!to->amaflags && from->amaflags)) {
+ if (!to->amaflags)
+ to->amaflags = AST_CDR_DOCUMENTATION;
+ if (!from->amaflags)
+ from->amaflags = AST_CDR_DOCUMENTATION; /* make sure both amaflags are set to something (DOC is default) */
+ if (ast_test_flag(from, AST_CDR_FLAG_LOCKED) || (to->amaflags == AST_CDR_DOCUMENTATION && from->amaflags != AST_CDR_DOCUMENTATION)) {
to->amaflags = from->amaflags;
- from->amaflags = 0; /* theft */
}
if (ast_test_flag(from, AST_CDR_FLAG_LOCKED) || (ast_strlen_zero(to->accountcode) && !ast_strlen_zero(from->accountcode))) {
ast_copy_string(to->accountcode, from->accountcode, sizeof(to->accountcode));
- from->accountcode[0] = 0; /* theft */
}
if (ast_test_flag(from, AST_CDR_FLAG_LOCKED) || (ast_strlen_zero(to->userfield) && !ast_strlen_zero(from->userfield))) {
ast_copy_string(to->userfield, from->userfield, sizeof(to->userfield));
- from->userfield[0] = 0; /* theft */
}
/* flags, varsead, ? */
cdr_merge_vars(from, to);