From: Joshua Colp Date: Sun, 1 Jul 2018 18:54:05 +0000 (-0300) Subject: res_pjsip_pubsub: Hold module reference for publications. X-Git-Tag: 15.5.0-rc1~2^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6b66ce99cfb0ec0f6478b94a6b4834b6cf3f2e00;p=thirdparty%2Fasterisk.git res_pjsip_pubsub: Hold module reference for publications. Incoming publications need to ensure that the module remains loaded for the lifetime of them. This is now done by holding a reference to the module while the publication exists. This mirrors that of inbound subscriptions. ASTERISK-27783 Change-Id: Ia98c95a15e11af25728d5fb3e56e12cda0cfc7c0 --- diff --git a/res/res_pjsip_pubsub.c b/res/res_pjsip_pubsub.c index 6b4743cfb3..3462cb1cc9 100644 --- a/res/res_pjsip_pubsub.c +++ b/res/res_pjsip_pubsub.c @@ -3096,6 +3096,8 @@ static void publication_destroy_fn(void *obj) ao2_cleanup(publication->datastores); ao2_cleanup(publication->endpoint); + + ast_module_unref(ast_module_info->self); } static struct ast_sip_publication *sip_create_publication(struct ast_sip_endpoint *endpoint, pjsip_rx_data *rdata, @@ -3112,6 +3114,8 @@ static struct ast_sip_publication *sip_create_publication(struct ast_sip_endpoin return NULL; } + ast_module_ref(ast_module_info->self); + if (!(publication->datastores = ast_datastores_alloc())) { ao2_ref(publication, -1); return NULL;