diff --git a/main/app.c b/main/app.c index a73349b986544cbe93159d81dc2485251490100d..623843a13cb6a9dba37333a0fba277353a68de62 100644 --- a/main/app.c +++ b/main/app.c @@ -3356,8 +3356,6 @@ int ast_delete_mwi_state_full(const char *mailbox, const char *context, struct a stasis_publish(mailbox_specific_topic, clear_msg); } - stasis_topic_pool_delete_topic(mwi_topic_pool, mwi_state->uniqueid); - ao2_cleanup(clear_msg); return 0; } diff --git a/main/stasis.c b/main/stasis.c index 9a1a5ad45d4cfec88512764c649b3e340e208405..3fee6ba3d85d00c9bf17b8921fe3d303005dc83c 100644 --- a/main/stasis.c +++ b/main/stasis.c @@ -402,6 +402,7 @@ static void topic_dtor(void *obj) AST_VECTOR_FREE(&topic->subscribers); AST_VECTOR_FREE(&topic->upstream_topics); + ast_debug(1, "Topic '%s': %p destroyed\n", topic->name, topic); #ifdef AST_DEVMODE if (topic->statistics) { @@ -456,6 +457,8 @@ struct stasis_topic *stasis_topic_create(const char *name) strcpy(topic->name, name); /* SAFE */ res |= AST_VECTOR_INIT(&topic->subscribers, INITIAL_SUBSCRIBERS_MAX); res |= AST_VECTOR_INIT(&topic->upstream_topics, 0); + ast_debug(1, "Topic '%s': %p created\n", topic->name, topic); + #ifdef AST_DEVMODE topic->statistics = stasis_topic_statistics_create(topic); if (!topic->name || !topic->statistics || res) @@ -754,6 +757,7 @@ struct stasis_subscription *internal_stasis_subscribe( if (topic_add_subscription(topic, sub) != 0) { ao2_ref(sub, -1); + ao2_ref(topic, -1); return NULL; } diff --git a/res/res_pjsip_mwi.c b/res/res_pjsip_mwi.c index 56225155eb319de167b5b4db8121489ca74249c6..7f86d981b668acddd353989f5b2bf4c5957322fd 100644 --- a/res/res_pjsip_mwi.c +++ b/res/res_pjsip_mwi.c @@ -259,10 +259,12 @@ static struct mwi_stasis_subscription *mwi_stasis_subscription_alloc(const char /* Safe strcpy */ strcpy(mwi_stasis_sub->mailbox, mailbox); - ast_debug(3, "Creating stasis MWI subscription to mailbox %s for endpoint %s\n", - mailbox, mwi_sub->id); + ast_debug(3, "Creating stasis MWI subscription to mailbox %s for endpoint %s. Topic: '%s':%p %d\n", + 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. */ ao2_ref(mwi_stasis_sub, -1);