[asterisk-commits] dlee: branch dlee/stasis-core r382508 - /team/dlee/stasis-core/main/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Wed Mar 6 11:18:02 CST 2013


Author: dlee
Date: Wed Mar  6 11:17:59 2013
New Revision: 382508

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=382508
Log:
Fixed race condition when destroying caching topics

Modified:
    team/dlee/stasis-core/main/stasis_cache.c

Modified: team/dlee/stasis-core/main/stasis_cache.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-core/main/stasis_cache.c?view=diff&rev=382508&r1=382507&r2=382508
==============================================================================
--- team/dlee/stasis-core/main/stasis_cache.c (original)
+++ team/dlee/stasis-core/main/stasis_cache.c Wed Mar  6 11:17:59 2013
@@ -51,7 +51,8 @@
 
 static void stasis_caching_topic_dtor(void *obj) {
 	struct stasis_caching_topic *caching_topic = obj;
-	ast_assert(caching_topic->sub == NULL);
+	ast_assert(!stasis_subscription_is_subscribed(caching_topic->sub));
+	caching_topic->sub = NULL;
 	ao2_cleanup(caching_topic->cache);
 	caching_topic->cache = NULL;
 	ao2_cleanup(caching_topic->topic);
@@ -66,9 +67,8 @@
 void stasis_caching_unsubscribe(struct stasis_caching_topic *caching_topic)
 {
 	if (caching_topic) {
-		if (caching_topic->sub) {
+		if (stasis_subscription_is_subscribed(caching_topic->sub)) {
 			stasis_unsubscribe(caching_topic->sub);
-			caching_topic->sub = NULL;
 		} else {
 			ast_log(LOG_ERROR, "stasis_caching_topic unsubscribed multiple times\n");
 		}




More information about the asterisk-commits mailing list