From 1fe1dccf33eab66d2e9469f6c3a6fe75515bfee8 Mon Sep 17 00:00:00 2001 From: kpfleming Date: Fri, 12 Jan 2007 15:01:46 +0000 Subject: make the automatic post-answer delay happen only when the answer is 'automatic' (not done by the Answer() dialplan application) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@50571 f38db490-d61c-443f-a65b-d21fe96a405b --- main/channel.c | 10 ++++++++-- main/pbx.c | 14 ++------------ 2 files changed, 10 insertions(+), 14 deletions(-) (limited to 'main') diff --git a/main/channel.c b/main/channel.c index 42bca18bd..dcdecdfdc 100644 --- a/main/channel.c +++ b/main/channel.c @@ -1612,7 +1612,7 @@ int ast_hangup(struct ast_channel *chan) return res; } -int ast_answer(struct ast_channel *chan) +int __ast_answer(struct ast_channel *chan, unsigned int delay) { int res = 0; @@ -1637,7 +1637,8 @@ int ast_answer(struct ast_channel *chan) res = chan->tech->answer(chan); ast_setstate(chan, AST_STATE_UP); ast_cdr_answer(chan->cdr); - ast_safe_sleep(chan, 500); + if (delay) + ast_safe_sleep(chan, delay); break; case AST_STATE_UP: ast_cdr_answer(chan->cdr); @@ -1651,6 +1652,11 @@ int ast_answer(struct ast_channel *chan) return res; } +int ast_answer(struct ast_channel *chan) +{ + return __ast_answer(chan, 500); +} + void ast_deactivate_generator(struct ast_channel *chan) { ast_channel_lock(chan); diff --git a/main/pbx.c b/main/pbx.c index 10c9911ad..1f656adea 100644 --- a/main/pbx.c +++ b/main/pbx.c @@ -5326,21 +5326,11 @@ static int pbx_builtin_congestion(struct ast_channel *chan, void *data) static int pbx_builtin_answer(struct ast_channel *chan, void *data) { int delay = 0; - int res; - if (chan->_state == AST_STATE_UP) - delay = 0; - else if (!ast_strlen_zero(data)) + if ((chan->_state != AST_STATE_UP) && !ast_strlen_zero(data)) delay = atoi(data); - res = ast_answer(chan); - if (res) - return res; - - if (delay) - res = ast_safe_sleep(chan, delay); - - return res; + return __ast_answer(chan, delay); } AST_APP_OPTIONS(resetcdr_opts, { -- cgit v1.2.3