diff --git a/cdr.c b/cdr.c index 19c73dce48b36676f43a778e232b6fbe5bf20ba5..323c8ade2a472ef1bf63521a0fc2f6980e88e6d9 100644 --- a/cdr.c +++ b/cdr.c @@ -515,8 +515,10 @@ void ast_cdr_failed(struct ast_cdr *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)) - cdr->disposition = AST_CDR_FAILED; + if (!ast_test_flag(cdr, AST_CDR_FLAG_LOCKED)) { + if (cdr->disposition < AST_CDR_FAILED) + cdr->disposition = AST_CDR_FAILED; + } cdr = cdr->next; } } diff --git a/include/asterisk/cdr.h b/include/asterisk/cdr.h index e6685509a31c25018e5df314ae3967ac98760f65..b08f0fd7bf58275479c76a80acd90dfef37e0418 100644 --- a/include/asterisk/cdr.h +++ b/include/asterisk/cdr.h @@ -32,8 +32,8 @@ #define AST_CDR_NOANSWER (1 << 0) #define AST_CDR_BUSY (1 << 1) -#define AST_CDR_ANSWERED (1 << 2) -#define AST_CDR_FAILED (1 << 3) +#define AST_CDR_FAILED (1 << 2) +#define AST_CDR_ANSWERED (1 << 3) /*! AMA Flags */ #define AST_CDR_OMIT (1)