mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +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:
@@ -108,7 +108,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);
|
||||
}
|
||||
|
||||
@@ -154,6 +153,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