From: Steve Murphy Date: Wed, 20 Aug 2008 17:14:55 +0000 (+0000) Subject: (closes issue #13263) X-Git-Tag: 1.4.22-rc2~7 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=811faa86121c51770dcbf07a30b1fea8321ff779;p=thirdparty%2Fasterisk.git (closes issue #13263) Reported by: brainy Tested by: murf The specialized reset routine is tromping on the flags field of the CDR. I made a change to not reset the DISABLED bit. This should get rid of this problem. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@139074 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/cdr.c b/main/cdr.c index 1df433c327..903bba0da7 100644 --- a/main/cdr.c +++ b/main/cdr.c @@ -1071,14 +1071,17 @@ void ast_cdr_specialized_reset(struct ast_cdr *cdr, struct ast_flags *_flags) { struct ast_flags flags = { 0 }; - if (_flags) - ast_copy_flags(&flags, _flags, AST_FLAGS_ALL); - if (_flags) ast_copy_flags(&flags, _flags, AST_FLAGS_ALL); /* Reset to initial state */ - ast_clear_flag(cdr, AST_FLAGS_ALL); + if (ast_test_flag(cdr, AST_CDR_FLAG_POST_DISABLED)) { /* But do NOT lose the NoCDR() setting */ + ast_clear_flag(cdr, AST_FLAGS_ALL); + ast_set_flag(cdr, AST_CDR_FLAG_POST_DISABLED); + } else { + ast_clear_flag(cdr, AST_FLAGS_ALL); + } + memset(&cdr->start, 0, sizeof(cdr->start)); memset(&cdr->end, 0, sizeof(cdr->end)); memset(&cdr->answer, 0, sizeof(cdr->answer));