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: https://origsvn.digium.com/svn/asterisk/trunk@247609
65c4cc65-6c06-0410-ace0-
fbb531ad65f3
{
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;
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 */
ast_verb(3, "Native bridging %s and %s ended\n", c0->name, c1->name);
/* fallthrough */
case AST_BRIDGE_FAILED_NOWARN:
- nativefailed++;
break;
}
}