]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 304006 via svnmerge from
authorRichard Mudgett <rmudgett@digium.com>
Tue, 25 Jan 2011 23:28:25 +0000 (23:28 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Tue, 25 Jan 2011 23:28:25 +0000 (23:28 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

................
  r304006 | rmudgett | 2011-01-25 17:25:32 -0600 (Tue, 25 Jan 2011) | 15 lines

  Merged revisions 304005 via svnmerge from
  https://origsvn.digium.com/svn/asterisk/branches/1.4

  ........
    r304005 | rmudgett | 2011-01-25 17:21:09 -0600 (Tue, 25 Jan 2011) | 8 lines

    DTMF attended transfers sometimes fail for no apparent reason.

    The loop in feature_request_and_dial() can exit when Party C has answered
    without processing an AST_CONTROL_ANSWER.  Also sometimes an
    AST_CONTROL_ANSWER never happens even though Party C has answered.

    Don't hangup Party C if he is up or we receive an AST_CONTROL_ANSWER.
  ........
................

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@304007 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/features.c

index efa438d3fe2a0f3210c53f1355571008fe1aa720..4492ef5d6fd8097585f11417c0f0dfe4410dbff7 100644 (file)
@@ -3245,9 +3245,8 @@ static struct ast_channel *feature_request_and_dial(struct ast_channel *caller,
 
 done:
        ast_indicate(caller, -1);
-       if (chan && ready) {
-               if (chan->_state == AST_STATE_UP)
-                       state = AST_CONTROL_ANSWER;
+       if (chan && (ready || chan->_state == AST_STATE_UP)) {
+               state = AST_CONTROL_ANSWER;
        } else if (chan) {
                ast_hangup(chan);
                chan = NULL;