diff options
author | Joshua Colp <jcolp@digium.com> | 2016-11-02 15:52:13 +0000 |
---|---|---|
committer | Joshua Colp <jcolp@digium.com> | 2016-11-07 10:02:17 -0500 |
commit | cfede6a1fc6fc50a48f251eb9968621e3b4e9649 (patch) | |
tree | b4b5b956f4969663729fba0b4f843d3868b06791 /res/res_stasis.c | |
parent | ec5b3972ffa16319c35167f7a216760cbe645a7a (diff) |
res_stasis: Don't unsubscribe from a NULL bridge.
A NULL bridge has special meaning in res_stasis for
unsubscribing. It means that a subscription to ALL
bridges should be removed. This should not be done
as part of the normal subscription management in
the res_stasis channel loop.
ASTERISK-26468
Change-Id: I6d5bea8246dd13a22ef86b736aefbf2a39c15af0
Diffstat (limited to 'res/res_stasis.c')
-rw-r--r-- | res/res_stasis.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/res/res_stasis.c b/res/res_stasis.c index 5c3fef78b..9e57acfb3 100644 --- a/res/res_stasis.c +++ b/res/res_stasis.c @@ -1329,7 +1329,9 @@ int stasis_app_exec(struct ast_channel *chan, const char *app_name, int argc, bridge = ao2_bump(stasis_app_get_bridge(control)); if (bridge != last_bridge) { - app_unsubscribe_bridge(app, last_bridge); + if (last_bridge) { + app_unsubscribe_bridge(app, last_bridge); + } if (bridge) { app_subscribe_bridge(app, bridge); } @@ -1390,7 +1392,9 @@ int stasis_app_exec(struct ast_channel *chan, const char *app_name, int argc, ast_bridge_depart(chan); } - app_unsubscribe_bridge(app, stasis_app_get_bridge(control)); + if (stasis_app_get_bridge(control)) { + app_unsubscribe_bridge(app, stasis_app_get_bridge(control)); + } ao2_cleanup(bridge); /* Only publish a stasis_end event if it hasn't already been published */ |