Index: include/asterisk/cdr.h =================================================================== --- include/asterisk/cdr.h (revision 234615) +++ include/asterisk/cdr.h (working copy) @@ -40,10 +40,10 @@ #define AST_CDR_FLAG_ORIGINATED (1 << 11) /*! Disposition */ -#define AST_CDR_NULL 0 -#define AST_CDR_FAILED (1 << 0) -#define AST_CDR_BUSY (1 << 1) -#define AST_CDR_NOANSWER (1 << 2) +#define AST_CDR_NOANSWER 0 +#define AST_CDR_NULL (1 << 0) +#define AST_CDR_FAILED (1 << 1) +#define AST_CDR_BUSY (1 << 2) #define AST_CDR_ANSWERED (1 << 3) /*! AMA Flags */ Index: main/channel.c =================================================================== --- main/channel.c (revision 234615) +++ main/channel.c (working copy) @@ -1586,7 +1586,6 @@ !ast_test_flag(chan->cdr, AST_CDR_FLAG_POST_DISABLED) && (chan->cdr->disposition != AST_CDR_NULL || ast_test_flag(chan->cdr, AST_CDR_FLAG_DIALED))) { ast_channel_lock(chan); - ast_cdr_end(chan->cdr); ast_cdr_detach(chan->cdr); chan->cdr = NULL; @@ -3470,8 +3469,10 @@ /* Stop if we're a zombie or need a soft hangup */ ast_channel_lock(chan); if (!ast_test_flag(chan, AST_FLAG_ZOMBIE) && !ast_check_hangup(chan)) { - if (chan->cdr) + if (chan->cdr) { ast_set_flag(chan->cdr, AST_CDR_FLAG_DIALED); + ast_set_flag(chan->cdr, AST_CDR_FLAG_ORIGINATED); + } if (chan->tech->call) res = chan->tech->call(chan, addr, timeout); ast_set_flag(chan, AST_FLAG_OUTGOING);