diff --git a/include/asterisk/stasis.h b/include/asterisk/stasis.h index 1d35bf87c9da602c76295e78e02557bb91364d27..9a5f7537c5d7c63c4bd937f245e861be3c78a625 100644 --- a/include/asterisk/stasis.h +++ b/include/asterisk/stasis.h @@ -306,9 +306,10 @@ struct stasis_subscription *stasis_subscribe(struct stasis_topic *topic, * delivery of the final message. * * \param subscription Subscription to cancel. + * \retval NULL for convenience * \since 12 */ -void stasis_unsubscribe(struct stasis_subscription *subscription); +struct stasis_subscription *stasis_unsubscribe(struct stasis_subscription *subscription); /*! * \brief Create a subscription which forwards all messages from one topic to @@ -450,9 +451,10 @@ struct stasis_caching_topic *stasis_caching_topic_create(struct stasis_topic *or /*! * Unsubscribes a caching topic from its upstream topic. * \param caching_topic Caching topic to unsubscribe + * \retval NULL for convenience * \since 12 */ -void stasis_caching_unsubscribe(struct stasis_caching_topic *caching_topic); +struct stasis_caching_topic *stasis_caching_unsubscribe(struct stasis_caching_topic *caching_topic); /*! * \brief Returns the topic of cached events from a caching topics. diff --git a/main/stasis.c b/main/stasis.c index d1f11537ede74f3c7a24c6c0b22879f285e2e627..7f18bf5e17799da7e3db311258a764948214d63e 100644 --- a/main/stasis.c +++ b/main/stasis.c @@ -172,7 +172,7 @@ struct stasis_subscription *stasis_subscribe(struct stasis_topic *topic, stasis_ return __stasis_subscribe(topic, callback, data, 1); } -void stasis_unsubscribe(struct stasis_subscription *sub) +struct stasis_subscription *stasis_unsubscribe(struct stasis_subscription *sub) { if (sub) { size_t i; @@ -186,12 +186,13 @@ void stasis_unsubscribe(struct stasis_subscription *sub) topic->subscribers[i] = topic->subscribers[--topic->num_subscribers_current]; /* Unsubscribing unrefs the subscription */ ao2_cleanup(sub); - return; + return NULL; } } ast_log(LOG_ERROR, "Internal error: subscription has invalid topic\n"); } + return NULL; } int stasis_subscription_is_subscribed(const struct stasis_subscription *sub) diff --git a/main/stasis_cache.c b/main/stasis_cache.c index f8518ce09d2a5935f50d324fca5feeb78055b159..a82492870446dd5230ba7746556a0cc6ad2a75a3 100644 --- a/main/stasis_cache.c +++ b/main/stasis_cache.c @@ -65,7 +65,7 @@ struct stasis_topic *stasis_caching_get_topic(struct stasis_caching_topic *cachi return caching_topic->topic; } -void stasis_caching_unsubscribe(struct stasis_caching_topic *caching_topic) +struct stasis_caching_topic *stasis_caching_unsubscribe(struct stasis_caching_topic *caching_topic) { if (caching_topic) { if (stasis_subscription_is_subscribed(caching_topic->sub)) { @@ -74,6 +74,7 @@ void stasis_caching_unsubscribe(struct stasis_caching_topic *caching_topic) ast_log(LOG_ERROR, "stasis_caching_topic unsubscribed multiple times\n"); } } + return NULL; } struct cache_entry {