summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorMatthew Nicholson <mnicholson@digium.com>2010-09-14 18:05:39 +0000
committerMatthew Nicholson <mnicholson@digium.com>2010-09-14 18:05:39 +0000
commitbf5121e3675b053e6a82e0d8709393bc22cd69c1 (patch)
tree22f7eb8baae93c9ef9b28092c6a86e8e259ed58e /main
parent5fa454010ea4c04b203345464484c640f4914277 (diff)
Merged revisions 286682 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8 ................ r286682 | mnicholson | 2010-09-14 13:04:21 -0500 (Tue, 14 Sep 2010) | 21 lines Merged revisions 286681 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r286681 | mnicholson | 2010-09-14 13:02:24 -0500 (Tue, 14 Sep 2010) | 14 lines Merged revisions 286679 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r286679 | mnicholson | 2010-09-14 13:00:01 -0500 (Tue, 14 Sep 2010) | 7 lines Only drop duplicate answer frames if the channel is bridged. Back in r3710 ast_read() was modified to drop answer frames on channels that were in the UP state. This modification prevented bridges that were up before the answer from being broken and reestablished by an ANSWER control frame. That change also prevents pickup of channels called from the ast_dial framework from working properly. The ast_dial framework expects to see an ANSWER frame after dialing and the pickup code queues one but ast_read() drops it. This new change only drops ANSWER frames when the channel is bridged, allowing the answer queued by the pickup code to properly pass through ast_read() on to the ast_dial framework. ABE-2473 (related to issue #2342) ........ ................ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@286683 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main')
-rw-r--r--main/channel.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/main/channel.c b/main/channel.c
index 5834410ca..6f068384b 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -3771,7 +3771,7 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio)
ast_debug(1, "Ignoring answer on an inbound call!\n");
ast_frfree(f);
f = &ast_null_frame;
- } else if (prestate == AST_STATE_UP) {
+ } else if (prestate == AST_STATE_UP && ast_bridged_channel(chan)) {
ast_debug(1, "Dropping duplicate answer!\n");
ast_frfree(f);
f = &ast_null_frame;