aboutsummaryrefslogtreecommitdiffstats
path: root/main/channel.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/channel.c')
-rw-r--r--main/channel.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/main/channel.c b/main/channel.c
index e357fe3b8..e77498491 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -3920,8 +3920,19 @@ struct ast_channel *__ast_request_and_dial(const char *type, int format, void *d
break;
case AST_CONTROL_BUSY:
+ ast_cdr_busy(chan->cdr);
+ *outstate = f->subclass;
+ timeout = 0;
+ break;
+
case AST_CONTROL_CONGESTION:
+ ast_cdr_failed(chan->cdr);
+ *outstate = f->subclass;
+ timeout = 0;
+ break;
+
case AST_CONTROL_ANSWER:
+ ast_cdr_answer(chan->cdr);
*outstate = f->subclass;
timeout = 0; /* trick to force exit from the while() */
break;
@@ -4052,7 +4063,6 @@ int ast_call(struct ast_channel *chan, char *addr, int timeout)
if (!ast_test_flag(chan, AST_FLAG_ZOMBIE) && !ast_check_hangup(chan)) {
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);