diff options
-rw-r--r-- | include/asterisk/cdr.h | 10 | ||||
-rw-r--r-- | main/channel.c | 10 |
2 files changed, 8 insertions, 12 deletions
diff --git a/include/asterisk/cdr.h b/include/asterisk/cdr.h index 23c63ea50..e7659703d 100644 --- a/include/asterisk/cdr.h +++ b/include/asterisk/cdr.h @@ -39,15 +39,15 @@ #define AST_CDR_FLAG_DONT_TOUCH (1 << 9) #define AST_CDR_FLAG_POST_ENABLE (1 << 10) #define AST_CDR_FLAG_DIALED (1 << 11) +#define AST_CDR_FLAG_ORIGINATED (1 << 12) /*@} */ -#define AST_CDR_FLAG_ORIGINATED (1 << 11) /*! \name CDR Flags - 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) /*@} */ diff --git a/main/channel.c b/main/channel.c index 9f3f550df..cb30e1449 100644 --- a/main/channel.c +++ b/main/channel.c @@ -2141,7 +2141,6 @@ void ast_set_hangupsource(struct ast_channel *chan, const char *source, int forc int ast_hangup(struct ast_channel *chan) { int res = 0; - struct ast_cdr *cdr = NULL; char extra_str[64]; /* used for cel logging below */ /* Don't actually hang up a channel that will masquerade as someone else, or @@ -2205,11 +2204,6 @@ int ast_hangup(struct ast_channel *chan) snprintf(extra_str, sizeof(extra_str), "%d,%s,%s", chan->hangupcause, chan->hangupsource, S_OR(pbx_builtin_getvar_helper(chan, "DIALSTATUS"), "")); ast_cel_report_event(chan, AST_CEL_HANGUP, NULL, extra_str, NULL); - if (chan->cdr) { /* End the CDR if it hasn't already */ - ast_cdr_end(chan->cdr); - cdr = chan->cdr; - chan->cdr = NULL; - } if (ast_test_flag(chan, AST_FLAG_BLOCKING)) { ast_log(LOG_WARNING, "Hard hangup called by thread %ld on %s, while fd " "is blocked by thread %ld in procedure %s! Expect a failure\n", @@ -4568,8 +4562,10 @@ int ast_call(struct ast_channel *chan, char *addr, int timeout) /* 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); |