mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	res_stasis_device_state: Unsubscribe should remove old subscriptions
Case scenario with Applications ARI: * Once you subscribe to deviceState with Applications REST API, it will be added into subscription pool. * When you unsubscribe it will remove from the device_state_subscription hash table but not from the subscription pool. * When you subscribe again, it will add it to pool again. * Now you will have two subscriptions and you will receive same event twice. This fix should now remove deviceState subscription from pool and it should fix unsubscribe on deviceState. ASTERISK-27130 #close Change-Id: I718b70d770a086e39b4ddba4f69a3c616d4476c4
This commit is contained in:
		| @@ -106,7 +106,6 @@ static int device_state_subscriptions_cmp(void *obj, void *arg, int flags) | ||||
| static void device_state_subscription_destroy(void *obj) | ||||
| { | ||||
| 	struct device_state_subscription *sub = obj; | ||||
| 	sub->sub = stasis_unsubscribe_and_join(sub->sub); | ||||
| 	ast_string_field_free_memory(sub); | ||||
| } | ||||
|  | ||||
| @@ -152,6 +151,9 @@ static struct device_state_subscription *find_device_state_subscription( | ||||
| static void remove_device_state_subscription( | ||||
| 	struct device_state_subscription *sub) | ||||
| { | ||||
| 	if (sub->sub) { | ||||
| 		sub->sub = stasis_unsubscribe_and_join(sub->sub); | ||||
| 	} | ||||
| 	ao2_unlink_flags(device_state_subscriptions, sub, OBJ_NOLOCK); | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user