ast_mwi_topic() returns a borrowed reference which should not be
unreferenced, doing so leads to a FRACK. This was hidden by the fact
that stasis_cache.c leaked the result of cache_remove in
caching_topic_exec.
Change-Id: I51101bf7d07b8dc8ce8fc46b6cb31fbbd213fbc7
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(cache_remove(caching_topic->cache->entries, sub, stasis_message_eid(message)));
ao2_cleanup(sub);
}
ao2_unlock(caching_topic->cache->entries);
mailbox, mwi_sub->id, stasis_topic_name(topic), topic, (int)ao2_ref(topic, 0));
ao2_ref(mwi_sub, +1);
mwi_stasis_sub->stasis_sub = stasis_subscribe_pool(topic, mwi_stasis_cb, mwi_sub);
- ao2_ref(topic, -1);
if (!mwi_stasis_sub->stasis_sub) {
/* Failed to subscribe. */