Place the delay in __ast_answer prior to the channel-specific answer
authorMark Michelson <mmichelson@digium.com>
Tue, 1 Jul 2008 21:16:00 +0000 (21:16 +0000)
committerMark Michelson <mmichelson@digium.com>
Tue, 1 Jul 2008 21:16:00 +0000 (21:16 +0000)
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

main/channel.c

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