From: Kinsey Moore Date: Fri, 15 Mar 2013 12:58:23 +0000 (+0000) Subject: Make stasis unsubscription functions return NULL X-Git-Tag: 13.0.0-beta1~2009 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8c444f823b4834a426f65a75ae1f3f978a9745d0;p=thirdparty%2Fasterisk.git Make stasis unsubscription functions return NULL Unsubscribing things in Asterisk seems to very commonly follow with NULLing out the variable that was unsubscribed. This change makes that a bit simpler. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@383168 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/include/asterisk/stasis.h b/include/asterisk/stasis.h index 1d35bf87c9..9a5f7537c5 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 d1f11537ed..7f18bf5e17 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 f8518ce09d..a824928704 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 {