[asterisk-bugs] [JIRA] (ASTERISK-23780) Failing to join a bridge could leave the bridge orphaned.
Joshua Colp (JIRA)
noreply at issues.asterisk.org
Mon Dec 18 10:04:08 CST 2017
[ https://issues.asterisk.org/jira/browse/ASTERISK-23780?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Joshua Colp updated ASTERISK-23780:
-----------------------------------
Affects Version/s: 13.18.4
> Failing to join a bridge could leave the bridge orphaned.
> ---------------------------------------------------------
>
> Key: ASTERISK-23780
> URL: https://issues.asterisk.org/jira/browse/ASTERISK-23780
> Project: Asterisk
> Issue Type: Bug
> Security Level: None
> Components: Applications/app_bridgewait, Core/Bridging
> Affects Versions: SVN, 12.2.0, 13.18.4
> Reporter: Richard Mudgett
>
> A typical two party bridge gets the participants into it by using {{ast_bridge_impart()}} for the peer channel and {{ast_bridge_join(AST_BRIDGE_JOIN_PASS_REFERENCE)}} for the calling channel as in {{ast_bridge_call_with_flags()}}. Unfortunately, if the channels fail to join the bridge for some reason (e.g., The channel hangs up before joining.) then the bridge could get orphaned and never destroyed. The caller of {{ast_bridge_join(AST_BRIDGE_JOIN_PASS_REFERENCE)}} cannot correct this because it *intentionally* no longer has a bridge reference.
> Proposed solution:
> * Make {{ast_bridge_join()}} and {{ast_bridge_impart()}} do the {{bridge_channel_dissolve_check()}} as if the channel had just left the bridge.
> * Any hooks that are marked {{AST_BRIDGE_HOOK_REMOVE_ON_PULL}} should be removed as if the channel was pulled out of the bridge. Currently only one bridge join failure path removes the hooks causing an inconsistent return state. This may need to be the other way around and not remove these hooks if joining fails.
> The {{BridgeWait}} application needs to be fixed up if the channel fails to join the bridge in {{bridgewait_exec()}} because the interval hook may not be there if/when the channel fails to join the bridge. Also {{BridgeWait}} looks to get in an infinite loop if the channel hangs up or becomes a ZOMBIE while {{BridgeWait}} is trying to put it into the holding bridge.
--
This message was sent by Atlassian JIRA
(v6.2#6252)
More information about the asterisk-bugs
mailing list