Place the delay in __ast_answer prior to the channel-specific answer

callback. This change differs from commit 127113 in that now the 
channel is not set to AST_STATE_UP until after the answer callback.

(closes issue #12924)
Reported by: snyfer



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@127157 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Mark Michelson
2008-07-01 21:16:00 +00:00
parent 1b07e87538
commit 37db658b1f

View File

@@ -1699,7 +1699,6 @@ int __ast_answer(struct ast_channel *chan, unsigned int delay)
if (delay) { if (delay) {
int needanswer = (chan->tech->answer != NULL); int needanswer = (chan->tech->answer != NULL);
ast_setstate(chan, AST_STATE_UP);
ast_cdr_answer(chan->cdr); ast_cdr_answer(chan->cdr);
ast_channel_unlock(chan); ast_channel_unlock(chan);
ast_safe_sleep(chan, delay); ast_safe_sleep(chan, delay);
@@ -1712,6 +1711,7 @@ int __ast_answer(struct ast_channel *chan, unsigned int delay)
res = chan->tech->answer(chan); res = chan->tech->answer(chan);
ast_channel_unlock(chan); ast_channel_unlock(chan);
} }
ast_setstate(chan, AST_STATE_UP);
} else { } else {
if (chan->tech->answer) { if (chan->tech->answer) {
res = chan->tech->answer(chan); res = chan->tech->answer(chan);