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-03 21:08:58 +0000
commit3a1f9c5dab3fbb2159575d74721aa0f4ddc3d078 (patch)
tree08f98186166bbf1b1ee0a5abf82e6aaf4f969088 /res/res_stasis.c
parent18974927e5595f589f2c66a93da6e03185a07d65 (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 1183f67b8..19257e9ef 100644
--- a/res/res_stasis.c
+++ b/res/res_stasis.c
@@ -1315,7 +1315,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);
}
@@ -1376,7 +1378,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 */