summaryrefslogtreecommitdiff
path: root/res/res_stasis.c
diff options
context:
space:
mode:
authorJoshua Colp <jcolp@digium.com>2016-11-02 15:52:13 +0000
committerJoshua Colp <jcolp@digium.com>2016-11-07 10:02:17 -0500
commitcfede6a1fc6fc50a48f251eb9968621e3b4e9649 (patch)
treeb4b5b956f4969663729fba0b4f843d3868b06791 /res/res_stasis.c
parentec5b3972ffa16319c35167f7a216760cbe645a7a (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.c8
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 */