From 0dc7b3e8f846eb6ede433c970521fb15fe09dc69 Mon Sep 17 00:00:00 2001 From: Joshua Colp Date: Tue, 11 Sep 2007 15:34:40 +0000 Subject: (closes issue #10666) Reported by: arkadia Patches: cdr_lockorder.patch uploaded by arkadia (license 233) Optimize CDR stuff a bit. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@82248 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/cdr.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'main/cdr.c') diff --git a/main/cdr.c b/main/cdr.c index d7d312191..43b92aea9 100644 --- a/main/cdr.c +++ b/main/cdr.c @@ -714,8 +714,8 @@ void ast_cdr_busy(struct ast_cdr *cdr) void ast_cdr_failed(struct ast_cdr *cdr) { for (; cdr; cdr = cdr->next) { - check_post(cdr); if (!ast_test_flag(cdr, AST_CDR_FLAG_LOCKED)) { + check_post(cdr); if (cdr->disposition < AST_CDR_FAILED) cdr->disposition = AST_CDR_FAILED; } @@ -727,10 +727,10 @@ void ast_cdr_noanswer(struct ast_cdr *cdr) char *chan; while (cdr) { - chan = !ast_strlen_zero(cdr->channel) ? cdr->channel : ""; - if (ast_test_flag(cdr, AST_CDR_FLAG_POSTED)) - ast_log(LOG_WARNING, "CDR on channel '%s' already posted\n", chan); if (!ast_test_flag(cdr, AST_CDR_FLAG_LOCKED)) { + chan = !ast_strlen_zero(cdr->channel) ? cdr->channel : ""; + if (ast_test_flag(cdr, AST_CDR_FLAG_POSTED)) + ast_log(LOG_WARNING, "CDR on channel '%s' already posted\n", chan); if (cdr->disposition < AST_CDR_NOANSWER) cdr->disposition = AST_CDR_NOANSWER; } @@ -763,9 +763,10 @@ int ast_cdr_disposition(struct ast_cdr *cdr, int cause) void ast_cdr_setdestchan(struct ast_cdr *cdr, const char *chann) { for (; cdr; cdr = cdr->next) { - check_post(cdr); - if (!ast_test_flag(cdr, AST_CDR_FLAG_LOCKED)) + if (!ast_test_flag(cdr, AST_CDR_FLAG_LOCKED)) { + check_post(cdr); ast_copy_string(cdr->dstchannel, chann, sizeof(cdr->dstchannel)); + } } } -- cgit v1.2.3