aboutsummaryrefslogtreecommitdiffstats
path: root/main/cdr.c
diff options
context:
space:
mode:
authorfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2007-09-11 15:34:40 +0000
committerfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2007-09-11 15:34:40 +0000
commit4a27b4b674b80e0a95e4cb2fd0867cb7708b2c05 (patch)
tree7eccf250fee587268b8775cf0c28309948cfa635 /main/cdr.c
parent9fe316873aa1d6252cf46f16ccac61862e287976 (diff)
(closes issue #10666)
Reported by: arkadia Patches: cdr_lockorder.patch uploaded by arkadia (license 233) Optimize CDR stuff a bit. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@82248 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/cdr.c')
-rw-r--r--main/cdr.c13
1 files changed, 7 insertions, 6 deletions
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 : "<unknown>";
- 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 : "<unknown>";
+ 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));
+ }
}
}