summaryrefslogtreecommitdiff
path: root/main/channel.c
diff options
context:
space:
mode:
authorJoshua Colp <jcolp@digium.com>2015-06-25 08:42:46 -0300
committerJoshua Colp <jcolp@digium.com>2015-06-25 15:16:24 -0300
commite4a2ef9e4ef27488609bb01fc55e965cd93a9ad5 (patch)
tree0c82c939320792d65e2986992c4f28e655114ff5 /main/channel.c
parentdb0521f905ad6f2624990f8476522c6778c18725 (diff)
channel: Remove ignore of answer on non-outgoing channels.
Due to the way that channels can now be moved around inside of Asterisk it is possible for the outgoing flag of a channel to get cleared before it has been answered. This results in the bridge not receiving notification that the outgoing leg has been answered. This most easily exhibits itself with DTMF based blond transfers. Since the answer of the outgoing leg is ignored the other party continues to receive both a locally generated ringing and the media stream of the outgoing leg upon its answer. This results in no media being heard. This change removes the ignore of the answer and allows it to pass through. ASTERISK-25171 #close Change-Id: I82aedcec4f89f34a2e5472086dfc9a6c775bca8e
Diffstat (limited to 'main/channel.c')
-rw-r--r--main/channel.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/main/channel.c b/main/channel.c
index fa03f65e6..57523d71a 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -3905,11 +3905,7 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio)
switch (f->frametype) {
case AST_FRAME_CONTROL:
if (f->subclass.integer == AST_CONTROL_ANSWER) {
- if (!ast_test_flag(ast_channel_flags(chan), AST_FLAG_OUTGOING)) {
- ast_debug(1, "Ignoring answer on an inbound call!\n");
- ast_frfree(f);
- f = &ast_null_frame;
- } else if (prestate == AST_STATE_UP && ast_channel_is_bridged(chan)) {
+ if (prestate == AST_STATE_UP && ast_channel_is_bridged(chan)) {
ast_debug(1, "Dropping duplicate answer!\n");
ast_frfree(f);
f = &ast_null_frame;