app_voicemail: Cleanup mailbox topic and cache

app_voicemail wasn't properly cleaning up the stasis cache or the
mwi topic pool when the module was unloaded or when a user was
deleted as a result of a reload.  This resulted in leaks in both
areas.

* app_voicemail now calls ast_delete_mwi_state_full when it frees
  a user structure and ast_delete_mwi_state_full in turn now calls
  the new stasis_topic_pool_delete_topic function to clear the topic
  from the pool.

Change-Id: Ide23144a4a810e7e0faad5a8e988d15947965df8
This commit is contained in:
George Joseph 2018-09-20 09:15:48 -06:00
parent 1a9c69d729
commit fa1b836374
2 changed files with 7 additions and 0 deletions

View File

@ -2020,6 +2020,10 @@ static void free_user(struct ast_vm_user *vmu)
return;
}
if (!ast_strlen_zero(vmu->mailbox)) {
ast_delete_mwi_state_full(vmu->mailbox, vmu->context, NULL);
}
ast_free(vmu->email);
vmu->email = NULL;
ast_free(vmu->emailbody);

View File

@ -3344,6 +3344,9 @@ int ast_delete_mwi_state_full(const char *mailbox, const char *context, struct a
if (clear_msg) {
stasis_publish(mailbox_specific_topic, clear_msg);
}
stasis_topic_pool_delete_topic(mwi_topic_pool, stasis_topic_name(mailbox_specific_topic));
ao2_cleanup(clear_msg);
return 0;
}