mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	stasis_cache: Stop caching stasis subscription change messages
Since app_voicemail no longer uses the cache to maintain its state there is no longer a need to cache these messages. ASTERISK-27121 Change-Id: I321c708505f5ad8d00e1b0afc4c27dc2ac12ecb4
This commit is contained in:
		| @@ -817,29 +817,16 @@ static void caching_topic_exec(void *data, struct stasis_subscription *sub, | ||||
|  | ||||
| 	msg_type = stasis_message_type(message); | ||||
|  | ||||
| 	/* | ||||
| 	 * app_voicemail used to rely on the cache containing every topic subscribe and | ||||
| 	 * unsubscribe in order to determine if anyone was currently subscribed to a | ||||
| 	 * particular mailbox.  This caused the cache to grow unabated for the life of | ||||
| 	 * the asterisk instance.  Since it no longer needs the cache of these message | ||||
| 	 * types, and no other function needs them, we no longer cache them. | ||||
| 	 */ | ||||
| 	if (stasis_subscription_change_type() == msg_type) { | ||||
| 		struct stasis_subscription_change *change = stasis_message_data(message); | ||||
|  | ||||
| 		/* | ||||
| 		 * If this change type is an unsubscribe, we need to find the original | ||||
| 		 * subscribe and remove it from the cache otherwise the cache will | ||||
| 		 * continue to grow unabated. | ||||
| 		 */ | ||||
| 		if (strcmp(change->description, "Unsubscribe") == 0) { | ||||
| 			struct stasis_cache_entry *sub; | ||||
|  | ||||
| 			ao2_wrlock(caching_topic->cache->entries); | ||||
| 			sub = cache_find(caching_topic->cache->entries, stasis_subscription_change_type(), change->uniqueid); | ||||
| 			if (sub) { | ||||
| 				cache_remove(caching_topic->cache->entries, sub, stasis_message_eid(message)); | ||||
| 				ao2_cleanup(sub); | ||||
| 			} | ||||
| 			ao2_unlock(caching_topic->cache->entries); | ||||
| 			ao2_cleanup(caching_topic_needs_unref); | ||||
| 			return; | ||||
| 		} | ||||
| 		msg_put = message; | ||||
| 		msg = message; | ||||
| 		ao2_cleanup(caching_topic_needs_unref); | ||||
| 		return; | ||||
| 	} else if (stasis_cache_clear_type() == msg_type) { | ||||
| 		/* Cache clear event. */ | ||||
| 		msg_put = NULL; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user