summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/asterisk/cdr.h10
-rw-r--r--main/channel.c10
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);