From ca014f49a2d50229a12278d44fab3131fc8e84aa Mon Sep 17 00:00:00 2001
From: Richard Mudgett <rmudgett@digium.com>
Date: Tue, 25 Jan 2011 23:31:40 +0000
Subject: [PATCH] Merged revisions 304007 via svnmerge from
 https://origsvn.digium.com/svn/asterisk/branches/1.8

................
  r304007 | rmudgett | 2011-01-25 17:28:25 -0600 (Tue, 25 Jan 2011) | 22 lines

  Merged revisions 304006 via svnmerge from
  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/trunk@304008 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 main/features.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/main/features.c b/main/features.c
index 474d36317e..b933756889 100644
--- a/main/features.c
+++ b/main/features.c
@@ -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;
-- 
GitLab