From: Richard Mudgett Date: Tue, 25 Jan 2011 23:28:25 +0000 (+0000) Subject: Merged revisions 304006 via svnmerge from X-Git-Tag: 1.8.4-rc1~80 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0c837cdf5735daaa01afb025d9a1f953f01e77ac;p=thirdparty%2Fasterisk.git 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/branches/1.8@304007 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/features.c b/main/features.c index efa438d3fe..4492ef5d6f 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;