Fix placing ISDN calls on hold preventing native bridging from being reexamined after a transfer.
Consider the following scenario: /-- B A == * == Network \-- C Party B calls party A (EuroISDN BRI phone) Party A puts B on hold using the HOLD/RETRIEVE messages. Party A calls party C. Party A puts C on hold to talk with party B again. Party A transfers B to C by hanging up. The call does not get the opportunity to get re-transferred into the ISDN network by the native bridge because native bridging is not being reexamined after the initial transfer. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@247609 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
parent
561b0d7798
commit
4d3e461b02
|
@ -5890,7 +5890,6 @@ enum ast_bridge_result ast_channel_bridge(struct ast_channel *c0, struct ast_cha
|
|||
{
|
||||
struct ast_channel *who = NULL, *chans[2] = { c0, c1 };
|
||||
enum ast_bridge_result res = AST_BRIDGE_COMPLETE;
|
||||
int nativefailed=0;
|
||||
format_t o0nativeformats;
|
||||
format_t o1nativeformats;
|
||||
long time_left_ms=0;
|
||||
|
@ -6055,7 +6054,7 @@ enum ast_bridge_result ast_channel_bridge(struct ast_channel *c0, struct ast_cha
|
|||
|
||||
if (c0->tech->bridge &&
|
||||
(c0->tech->bridge == c1->tech->bridge) &&
|
||||
!nativefailed && !c0->monitor && !c1->monitor &&
|
||||
!c0->monitor && !c1->monitor &&
|
||||
!c0->audiohooks && !c1->audiohooks &&
|
||||
!c0->masq && !c0->masqr && !c1->masq && !c1->masqr) {
|
||||
/* Looks like they share a bridge method and nothing else is in the way */
|
||||
|
@ -6096,7 +6095,6 @@ enum ast_bridge_result ast_channel_bridge(struct ast_channel *c0, struct ast_cha
|
|||
ast_verb(3, "Native bridging %s and %s ended\n", c0->name, c1->name);
|
||||
/* fallthrough */
|
||||
case AST_BRIDGE_FAILED_NOWARN:
|
||||
nativefailed++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Reference in New Issue