diff --git a/cdr.c b/cdr.c index 9d3eb68bd6..272ce0f695 100644 --- a/cdr.c +++ b/cdr.c @@ -520,8 +520,10 @@ void ast_cdr_failed(struct ast_cdr *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)) - 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 c438829463..ae10ac13a3 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)