<p>Corey Farrell has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.asterisk.org/7989">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Remove redundant module references.<br><br>This removes references that are no longer needed due to automatic<br>references created by module dependencies.<br><br>Change-Id: I332a6e8383d4c72c8e89d988a184ab8320c4872e<br>---<br>M apps/app_stasis.c<br>M channels/chan_pjsip.c<br>M funcs/func_periodic_hook.c<br>M include/asterisk/res_mwi_external.h<br>M include/asterisk/res_pjproject.h<br>M include/asterisk/res_pjsip.h<br>M include/asterisk/res_pjsip_session.h<br>M include/asterisk/stasis_app.h<br>M res/res_agi.c<br>M res/res_ari.c<br>M res/res_ari_applications.c<br>M res/res_ari_asterisk.c<br>M res/res_ari_bridges.c<br>M res/res_ari_channels.c<br>M res/res_ari_device_states.c<br>M res/res_ari_endpoints.c<br>M res/res_ari_events.c<br>M res/res_ari_mailboxes.c<br>M res/res_ari_playbacks.c<br>M res/res_ari_recordings.c<br>M res/res_ari_sounds.c<br>M res/res_crypto.c<br>M res/res_fax.c<br>M res/res_http_websocket.c<br>M res/res_monitor.c<br>M res/res_mwi_external.c<br>M res/res_mwi_external_ami.c<br>M res/res_pjproject.c<br>M res/res_pjsip.c<br>M res/res_pjsip/config_auth.c<br>M res/res_pjsip/config_transport.c<br>M res/res_pjsip/include/res_pjsip_private.h<br>M res/res_pjsip/location.c<br>M res/res_pjsip/pjsip_distributor.c<br>M res/res_pjsip/pjsip_global_headers.c<br>M res/res_pjsip/pjsip_message_filter.c<br>M res/res_pjsip/pjsip_options.c<br>M res/res_pjsip/pjsip_session.c<br>M res/res_pjsip_config_wizard.c<br>M res/res_pjsip_dlg_options.c<br>M res/res_pjsip_nat.c<br>M res/res_pjsip_one_touch_record_info.c<br>M res/res_pjsip_outbound_publish.c<br>M res/res_pjsip_path.c<br>M res/res_pjsip_pubsub.c<br>M res/res_pjsip_send_to_voicemail.c<br>M res/res_pjsip_session.c<br>M res/res_pjsip_t38.c<br>M res/res_pjsip_transport_websocket.c<br>M res/res_pktccops.c<br>M res/res_smdi.c<br>M res/res_stasis.c<br>M res/res_stasis_mailbox.c<br>M res/res_statsd.c<br>M res/stasis/app.c<br>M rest-api-templates/res_ari_resource.c.mustache<br>M tests/test_res_stasis.c<br>57 files changed, 81 insertions(+), 487 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/89/7989/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">diff --git a/apps/app_stasis.c b/apps/app_stasis.c<br>index 8d09349..b98c2b4 100644<br>--- a/apps/app_stasis.c<br>+++ b/apps/app_stasis.c<br>@@ -125,19 +125,12 @@<br> <br> static int load_module(void)<br> {<br>- int r = 0;<br>-<br>- stasis_app_ref();<br>- r |= ast_register_application_xml(stasis, app_exec);<br>- return r;<br>+ return ast_register_application_xml(stasis, app_exec);<br> }<br> <br> static int unload_module(void)<br> {<br>- int r = 0;<br>- r |= ast_unregister_application(stasis);<br>- stasis_app_unref();<br>- return r;<br>+ return ast_unregister_application(stasis);<br> }<br> <br> AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Stasis dialplan application",<br>diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c<br>index 68da4a1..20d1f82 100644<br>--- a/channels/chan_pjsip.c<br>+++ b/channels/chan_pjsip.c<br>@@ -3016,10 +3016,7 @@<br> goto end;<br> }<br> <br>- if (ast_sip_session_register_supplement(&chan_pjsip_supplement)) {<br>- ast_log(LOG_ERROR, "Unable to register PJSIP supplement\n");<br>- goto end;<br>- }<br>+ ast_sip_session_register_supplement(&chan_pjsip_supplement);<br> <br> if (!(pjsip_uids_onhold = ao2_container_alloc_hash(AO2_ALLOC_OPT_LOCK_RWLOCK,<br> AO2_CONTAINER_ALLOC_OPT_DUPS_REJECT, 37, uid_hold_hash_fn,<br>@@ -3028,26 +3025,9 @@<br> goto end;<br> }<br> <br>- if (ast_sip_session_register_supplement(&call_pickup_supplement)) {<br>- ast_log(LOG_ERROR, "Unable to register PJSIP call pickup supplement\n");<br>- ast_sip_session_unregister_supplement(&chan_pjsip_supplement);<br>- goto end;<br>- }<br>-<br>- if (ast_sip_session_register_supplement(&pbx_start_supplement)) {<br>- ast_log(LOG_ERROR, "Unable to register PJSIP pbx start supplement\n");<br>- ast_sip_session_unregister_supplement(&chan_pjsip_supplement);<br>- ast_sip_session_unregister_supplement(&call_pickup_supplement);<br>- goto end;<br>- }<br>-<br>- if (ast_sip_session_register_supplement(&chan_pjsip_ack_supplement)) {<br>- ast_log(LOG_ERROR, "Unable to register PJSIP ACK supplement\n");<br>- ast_sip_session_unregister_supplement(&pbx_start_supplement);<br>- ast_sip_session_unregister_supplement(&chan_pjsip_supplement);<br>- ast_sip_session_unregister_supplement(&call_pickup_supplement);<br>- goto end;<br>- }<br>+ ast_sip_session_register_supplement(&call_pickup_supplement);<br>+ ast_sip_session_register_supplement(&pbx_start_supplement);<br>+ ast_sip_session_register_supplement(&chan_pjsip_ack_supplement);<br> <br> if (pjsip_channel_cli_register()) {<br> ast_log(LOG_ERROR, "Unable to register PJSIP Channel CLI\n");<br>diff --git a/funcs/func_periodic_hook.c b/funcs/func_periodic_hook.c<br>index 958da97..1f66747 100644<br>--- a/funcs/func_periodic_hook.c<br>+++ b/funcs/func_periodic_hook.c<br>@@ -486,11 +486,6 @@<br> <br> res = ast_custom_function_register_escalating(&hook_function, AST_CFE_BOTH);<br> <br>- if (!res) {<br>- /* For Optional API. */<br>- ast_module_shutdown_ref(AST_MODULE_SELF);<br>- }<br>-<br> return res ? AST_MODULE_LOAD_DECLINE : AST_MODULE_LOAD_SUCCESS;<br> }<br> <br>diff --git a/include/asterisk/res_mwi_external.h b/include/asterisk/res_mwi_external.h<br>index 7698a1b..25de700 100644<br>--- a/include/asterisk/res_mwi_external.h<br>+++ b/include/asterisk/res_mwi_external.h<br>@@ -36,22 +36,6 @@<br> <br> /* ------------------------------------------------------------------- */<br> <br>-/*!<br>- * \brief Increase the external MWI resource module reference count.<br>- * \since 12.1.0<br>- *<br>- * \return Nothing<br>- */<br>-void ast_mwi_external_ref(void);<br>-<br>-/*!<br>- * \brief Decrease the external MWI resource module reference count.<br>- * \since 12.1.0<br>- *<br>- * \return Nothing<br>- */<br>-void ast_mwi_external_unref(void);<br>-<br> struct ast_mwi_mailbox_object;<br> <br> /*! \brief Convienience unref function for mailbox object. */<br>diff --git a/include/asterisk/res_pjproject.h b/include/asterisk/res_pjproject.h<br>index 8828b34..f62862b 100644<br>--- a/include/asterisk/res_pjproject.h<br>+++ b/include/asterisk/res_pjproject.h<br>@@ -79,18 +79,4 @@<br> */<br> void ast_pjproject_log_intercept_end(void);<br> <br>-/*!<br>- * \brief Increment the res_pjproject reference count.<br>- *<br>- * This ensures graceful shutdown happens in the proper order.<br>- */<br>-void ast_pjproject_ref(void);<br>-<br>-/*!<br>- * \brief Decrement the res_pjproject reference count.<br>- *<br>- * This ensures graceful shutdown happens in the proper order.<br>- */<br>-void ast_pjproject_unref(void);<br>-<br> #endif /* _RES_PJPROJECT_H */<br>diff --git a/include/asterisk/res_pjsip.h b/include/asterisk/res_pjsip.h<br>index 6c48d2e..34fa69a 100644<br>--- a/include/asterisk/res_pjsip.h<br>+++ b/include/asterisk/res_pjsip.h<br>@@ -931,9 +931,7 @@<br> * \retval 0 Success<br> * \retval -1 Failure<br> */<br>-#define ast_sip_register_service(module) \<br>- __ast_sip_register_service(module, __FILE__, __LINE__, __PRETTY_FUNCTION__)<br>-int __ast_sip_register_service(pjsip_module *module, const char *file, int line, const char *func);<br>+int ast_sip_register_service(pjsip_module *module);<br> <br> /*!<br> * This is the opposite of ast_sip_register_service(). Unregistering a<br>@@ -942,9 +940,7 @@<br> *<br> * \param module The PJSIP module to unregister<br> */<br>-#define ast_sip_unregister_service(module) \<br>- __ast_sip_unregister_service(module, __FILE__, __LINE__, __PRETTY_FUNCTION__)<br>-void __ast_sip_unregister_service(pjsip_module *module, const char *file, int line, const char *func);<br>+void ast_sip_unregister_service(pjsip_module *module);<br> <br> /*!<br> * \brief Register a SIP authenticator<br>@@ -2446,10 +2442,8 @@<br> * \brief Register an endpoint formatter.<br> *<br> * \param obj the formatter to register<br>- * \retval 0 Success<br>- * \retval -1 Failure<br> */<br>-int ast_sip_register_endpoint_formatter(struct ast_sip_endpoint_formatter *obj);<br>+void ast_sip_register_endpoint_formatter(struct ast_sip_endpoint_formatter *obj);<br> <br> /*!<br> * \brief Unregister an endpoint formatter.<br>@@ -2625,20 +2619,14 @@<br> * \retval 0 Success<br> * \retval -1 Failure<br> */<br>-#define ast_sip_register_supplement(supplement) \<br>- __ast_sip_register_supplement(supplement, __FILE__, __LINE__, __PRETTY_FUNCTION__)<br>-int __ast_sip_register_supplement(struct ast_sip_supplement *supplement,<br>- const char *file, int line, const char *func);<br>+void ast_sip_register_supplement(struct ast_sip_supplement *supplement);<br> <br> /*!<br> * \brief Unregister a an supplement to SIP out of dialog processing<br> *<br> * \param supplement The supplement to unregister<br> */<br>-#define ast_sip_unregister_supplement(supplement) \<br>- __ast_sip_unregister_supplement(supplement, __FILE__, __LINE__, __PRETTY_FUNCTION__)<br>-void __ast_sip_unregister_supplement(struct ast_sip_supplement *supplement,<br>- const char *file, int line, const char *func);<br>+void ast_sip_unregister_supplement(struct ast_sip_supplement *supplement);<br> <br> /*!<br> * \brief Retrieve the global MWI taskprocessor high water alert trigger level.<br>diff --git a/include/asterisk/res_pjsip_session.h b/include/asterisk/res_pjsip_session.h<br>index 65d4638..e0d1682 100644<br>--- a/include/asterisk/res_pjsip_session.h<br>+++ b/include/asterisk/res_pjsip_session.h<br>@@ -579,23 +579,15 @@<br> * a module could reject an incoming request if desired.<br> *<br> * \param supplement The supplement to register<br>- * \retval 0 Success<br>- * \retval -1 Failure<br> */<br>-#define ast_sip_session_register_supplement(supplement) \<br>- __ast_sip_session_register_supplement(supplement, __FILE__, __LINE__, __PRETTY_FUNCTION__)<br>-int __ast_sip_session_register_supplement(struct ast_sip_session_supplement *supplement,<br>- const char *file, int line, const char *func);<br>+void ast_sip_session_register_supplement(struct ast_sip_session_supplement *supplement);<br> <br> /*!<br> * \brief Unregister a an supplement to SIP session processing<br> *<br> * \param supplement The supplement to unregister<br> */<br>-#define ast_sip_session_unregister_supplement(supplement) \<br>- __ast_sip_session_unregister_supplement(supplement, __FILE__, __LINE__, __PRETTY_FUNCTION__)<br>-void __ast_sip_session_unregister_supplement(struct ast_sip_session_supplement *supplement,<br>- const char *file, int line, const char *func);<br>+void ast_sip_session_unregister_supplement(struct ast_sip_session_supplement *supplement);<br> <br> /*!<br> * \brief Add supplements to a SIP session<br>diff --git a/include/asterisk/stasis_app.h b/include/asterisk/stasis_app.h<br>index 8ef2bda..b0829ab 100644<br>--- a/include/asterisk/stasis_app.h<br>+++ b/include/asterisk/stasis_app.h<br>@@ -46,8 +46,8 @@<br> * functions.<br> *<br> * Since module unload order is based on reference counting, any module that<br>- * uses the API defined in this file must call stasis_app_ref() when loaded,<br>- * and stasis_app_unref() when unloaded.<br>+ * uses the API defined in this file must list "res_stasis" in the requires<br>+ * field.<br> */<br> <br> #include "asterisk/channel.h"<br>@@ -227,18 +227,6 @@<br> * \brief Register core event sources.<br> */<br> void stasis_app_register_event_sources(void);<br>-<br>-/*!<br>- * \brief Checks to see if the given object is a core event source<br>- *<br>- * \note core event sources are currently only endpoint, bridge, and channel.<br>- *<br>- * \param obj event source object to check<br>- *<br>- * \return non-zero if core event source, otherwise 0 (false)<br>-<br>- */<br>-int stasis_app_is_core_event_source(struct stasis_app_event_source *obj);<br> <br> /*!<br> * \brief Unregister an application event source.<br>@@ -848,20 +836,6 @@<br> * \retval zero on success<br> */<br> void stasis_app_bridge_destroy(const char *bridge_id);<br>-<br>-/*!<br>- * \brief Increment the res_stasis reference count.<br>- *<br>- * This ensures graceful shutdown happens in the proper order.<br>- */<br>-void stasis_app_ref(void);<br>-<br>-/*!<br>- * \brief Decrement the res_stasis reference count.<br>- *<br>- * This ensures graceful shutdown happens in the proper order.<br>- */<br>-void stasis_app_unref(void);<br> <br> /*!<br> * \brief Get the Stasis message sanitizer for app_stasis applications<br>diff --git a/res/res_agi.c b/res/res_agi.c<br>index 2d0dc27..34ace7a 100644<br>--- a/res/res_agi.c<br>+++ b/res/res_agi.c<br>@@ -3815,8 +3815,6 @@<br> AST_RWLIST_WRLOCK(&agi_commands);<br> AST_LIST_INSERT_TAIL(&agi_commands, cmd, list);<br> AST_RWLIST_UNLOCK(&agi_commands);<br>- if (mod != ast_module_info->self)<br>- ast_module_ref(ast_module_info->self);<br> ast_verb(2, "AGI Command '%s' registered\n",fullcmd);<br> return 1;<br> } else {<br>@@ -3837,8 +3835,6 @@<br> AST_RWLIST_TRAVERSE_SAFE_BEGIN(&agi_commands, e, list) {<br> if (cmd == e) {<br> AST_RWLIST_REMOVE_CURRENT(list);<br>- if (mod != ast_module_info->self)<br>- ast_module_unref(ast_module_info->self);<br> #ifdef AST_XML_DOCS<br> if (e->docsrc == AST_XML_DOC) {<br> ast_free((char *) e->summary);<br>@@ -4642,7 +4638,7 @@<br> break;<br> }<br> <br>- if (ast_agi_register(ast_module_info->self, &noop_command) == 0) {<br>+ if (ast_agi_register(NULL, &noop_command) == 0) {<br> ast_test_status_update(test, "Unable to register testnoop command, because res_agi is not loaded.\n");<br> return AST_TEST_NOT_RUN;<br> }<br>@@ -4659,7 +4655,7 @@<br> }<br> #endif<br> <br>- ast_agi_unregister(ast_module_info->self, &noop_command);<br>+ ast_agi_unregister(NULL, &noop_command);<br> return res;<br> }<br> #endif<br>@@ -4673,7 +4669,7 @@<br> STASIS_MESSAGE_TYPE_CLEANUP(agi_async_end_type);<br> <br> ast_cli_unregister_multiple(cli_agi, ARRAY_LEN(cli_agi));<br>- ast_agi_unregister_multiple(ast_module_info->self, commands, ARRAY_LEN(commands));<br>+ ast_agi_unregister_multiple(NULL, commands, ARRAY_LEN(commands));<br> ast_unregister_application(eapp);<br> ast_unregister_application(deadapp);<br> ast_manager_unregister("AGI");<br>@@ -4693,7 +4689,7 @@<br> err |= STASIS_MESSAGE_TYPE_INIT(agi_async_end_type);<br> <br> err |= ast_cli_register_multiple(cli_agi, ARRAY_LEN(cli_agi));<br>- err |= ast_agi_register_multiple(ast_module_info->self, commands, ARRAY_LEN(commands));<br>+ err |= ast_agi_register_multiple(NULL, commands, ARRAY_LEN(commands));<br> err |= ast_register_application_xml(deadapp, deadagi_exec);<br> err |= ast_register_application_xml(eapp, eagi_exec);<br> err |= ast_manager_register_xml("AGI", EVENT_FLAG_AGI, action_add_agi_cmd);<br>@@ -4705,9 +4701,6 @@<br> unload_module();<br> return AST_MODULE_LOAD_DECLINE;<br> }<br>-<br>- /* For Optional API. */<br>- ast_module_shutdown_ref(AST_MODULE_SELF);<br> <br> return AST_MODULE_LOAD_SUCCESS;<br> }<br>diff --git a/res/res_ari.c b/res/res_ari.c<br>index 6ce25a5..5ffb583 100644<br>--- a/res/res_ari.c<br>+++ b/res/res_ari.c<br>@@ -196,7 +196,6 @@<br> ao2_cleanup(root_handler);<br> ao2_ref(new_handler, +1);<br> root_handler = new_handler;<br>- ast_module_ref(ast_module_info->self);<br> return 0;<br> }<br> <br>@@ -222,7 +221,6 @@<br> memcpy(new_handler, root_handler, sizeof(*new_handler));<br> for (i = 0, j = 0; i < root_handler->num_children; ++i) {<br> if (root_handler->children[i] == handler) {<br>- ast_module_unref(ast_module_info->self);<br> continue;<br> }<br> new_handler->children[j++] = root_handler->children[i];<br>diff --git a/res/res_ari_applications.c b/res/res_ari_applications.c<br>index 323bdb3..aeb43e4 100644<br>--- a/res/res_ari_applications.c<br>+++ b/res/res_ari_applications.c<br>@@ -493,7 +493,6 @@<br> static int unload_module(void)<br> {<br> ast_ari_remove_handler(&applications);<br>- stasis_app_unref();<br> return 0;<br> }<br> <br>@@ -504,7 +503,6 @@<br> CHECK_ARI_MODULE_LOADED();<br> <br> <br>- stasis_app_ref();<br> res |= ast_ari_add_handler(&applications);<br> if (res) {<br> unload_module();<br>diff --git a/res/res_ari_asterisk.c b/res/res_ari_asterisk.c<br>index 9f76f93..840c832 100644<br>--- a/res/res_ari_asterisk.c<br>+++ b/res/res_ari_asterisk.c<br>@@ -1214,7 +1214,6 @@<br> static int unload_module(void)<br> {<br> ast_ari_remove_handler(&asterisk);<br>- stasis_app_unref();<br> return 0;<br> }<br> <br>@@ -1225,7 +1224,6 @@<br> CHECK_ARI_MODULE_LOADED();<br> <br> <br>- stasis_app_ref();<br> res |= ast_ari_add_handler(&asterisk);<br> if (res) {<br> unload_module();<br>diff --git a/res/res_ari_bridges.c b/res/res_ari_bridges.c<br>index 34b9d89..90c48f9 100644<br>--- a/res/res_ari_bridges.c<br>+++ b/res/res_ari_bridges.c<br>@@ -1554,7 +1554,6 @@<br> static int unload_module(void)<br> {<br> ast_ari_remove_handler(&bridges);<br>- stasis_app_unref();<br> return 0;<br> }<br> <br>@@ -1565,7 +1564,6 @@<br> CHECK_ARI_MODULE_LOADED();<br> <br> <br>- stasis_app_ref();<br> res |= ast_ari_add_handler(&bridges);<br> if (res) {<br> unload_module();<br>diff --git a/res/res_ari_channels.c b/res/res_ari_channels.c<br>index 7862c10..02144da 100644<br>--- a/res/res_ari_channels.c<br>+++ b/res/res_ari_channels.c<br>@@ -2844,7 +2844,6 @@<br> static int unload_module(void)<br> {<br> ast_ari_remove_handler(&channels);<br>- stasis_app_unref();<br> return 0;<br> }<br> <br>@@ -2855,7 +2854,6 @@<br> CHECK_ARI_MODULE_LOADED();<br> <br> <br>- stasis_app_ref();<br> res |= ast_ari_add_handler(&channels);<br> if (res) {<br> unload_module();<br>diff --git a/res/res_ari_device_states.c b/res/res_ari_device_states.c<br>index ec8890b..1cce031 100644<br>--- a/res/res_ari_device_states.c<br>+++ b/res/res_ari_device_states.c<br>@@ -324,7 +324,6 @@<br> static int unload_module(void)<br> {<br> ast_ari_remove_handler(&deviceStates);<br>- stasis_app_unref();<br> return 0;<br> }<br> <br>@@ -335,7 +334,6 @@<br> CHECK_ARI_MODULE_LOADED();<br> <br> <br>- stasis_app_ref();<br> res |= ast_ari_add_handler(&deviceStates);<br> if (res) {<br> unload_module();<br>diff --git a/res/res_ari_endpoints.c b/res/res_ari_endpoints.c<br>index 07197ca..3021741 100644<br>--- a/res/res_ari_endpoints.c<br>+++ b/res/res_ari_endpoints.c<br>@@ -448,7 +448,6 @@<br> static int unload_module(void)<br> {<br> ast_ari_remove_handler(&endpoints);<br>- stasis_app_unref();<br> return 0;<br> }<br> <br>@@ -459,7 +458,6 @@<br> CHECK_ARI_MODULE_LOADED();<br> <br> <br>- stasis_app_ref();<br> res |= ast_ari_add_handler(&endpoints);<br> if (res) {<br> unload_module();<br>diff --git a/res/res_ari_events.c b/res/res_ari_events.c<br>index f750a54..c9eea80 100644<br>--- a/res/res_ari_events.c<br>+++ b/res/res_ari_events.c<br>@@ -423,7 +423,6 @@<br> ao2_cleanup(events.ws_server);<br> events.ws_server = NULL;<br> ast_ari_websocket_events_event_websocket_dtor();<br>- stasis_app_unref();<br> return 0;<br> }<br> <br>@@ -459,7 +458,6 @@<br> res |= ast_websocket_server_add_protocol2(events.ws_server, protocol);<br> }<br> <br>- stasis_app_ref();<br> res |= ast_ari_add_handler(&events);<br> if (res) {<br> unload_module();<br>diff --git a/res/res_ari_mailboxes.c b/res/res_ari_mailboxes.c<br>index 6469f93..ff19bf7 100644<br>--- a/res/res_ari_mailboxes.c<br>+++ b/res/res_ari_mailboxes.c<br>@@ -330,7 +330,6 @@<br> static int unload_module(void)<br> {<br> ast_ari_remove_handler(&mailboxes);<br>- stasis_app_unref();<br> return 0;<br> }<br> <br>@@ -341,7 +340,6 @@<br> CHECK_ARI_MODULE_LOADED();<br> <br> <br>- stasis_app_ref();<br> res |= ast_ari_add_handler(&mailboxes);<br> if (res) {<br> unload_module();<br>diff --git a/res/res_ari_playbacks.c b/res/res_ari_playbacks.c<br>index 0148a74..1c4b182 100644<br>--- a/res/res_ari_playbacks.c<br>+++ b/res/res_ari_playbacks.c<br>@@ -282,7 +282,6 @@<br> static int unload_module(void)<br> {<br> ast_ari_remove_handler(&playbacks);<br>- stasis_app_unref();<br> return 0;<br> }<br> <br>@@ -293,7 +292,6 @@<br> CHECK_ARI_MODULE_LOADED();<br> <br> <br>- stasis_app_ref();<br> res |= ast_ari_add_handler(&playbacks);<br> if (res) {<br> unload_module();<br>diff --git a/res/res_ari_recordings.c b/res/res_ari_recordings.c<br>index 531ff65..3b8ee20 100644<br>--- a/res/res_ari_recordings.c<br>+++ b/res/res_ari_recordings.c<br>@@ -866,7 +866,6 @@<br> static int unload_module(void)<br> {<br> ast_ari_remove_handler(&recordings);<br>- stasis_app_unref();<br> return 0;<br> }<br> <br>@@ -877,7 +876,6 @@<br> CHECK_ARI_MODULE_LOADED();<br> <br> <br>- stasis_app_ref();<br> res |= ast_ari_add_handler(&recordings);<br> if (res) {<br> unload_module();<br>diff --git a/res/res_ari_sounds.c b/res/res_ari_sounds.c<br>index 5c27ebd..d77ce1b 100644<br>--- a/res/res_ari_sounds.c<br>+++ b/res/res_ari_sounds.c<br>@@ -212,7 +212,6 @@<br> static int unload_module(void)<br> {<br> ast_ari_remove_handler(&sounds);<br>- stasis_app_unref();<br> return 0;<br> }<br> <br>@@ -223,7 +222,6 @@<br> CHECK_ARI_MODULE_LOADED();<br> <br> <br>- stasis_app_ref();<br> res |= ast_ari_add_handler(&sounds);<br> if (res) {<br> unload_module();<br>diff --git a/res/res_crypto.c b/res/res_crypto.c<br>index 8f97ce9..4f8f2cb 100644<br>--- a/res/res_crypto.c<br>+++ b/res/res_crypto.c<br>@@ -651,8 +651,6 @@<br> crypto_load(-1, -1);<br> }<br> <br>- /* This prevents dlclose from ever running, but allows CLI cleanup at shutdown. */<br>- ast_module_shutdown_ref(ast_module_info->self);<br> return AST_MODULE_LOAD_SUCCESS;<br> }<br> <br>@@ -663,7 +661,6 @@<br> return 0;<br> }<br> <br>-/* needs usecount semantics defined */<br> AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER, "Cryptographic Digital Signatures",<br> .support_level = AST_MODULE_SUPPORT_CORE,<br> .load = load_module,<br>diff --git a/res/res_fax.c b/res/res_fax.c<br>index 4be5aee..315f000 100644<br>--- a/res/res_fax.c<br>+++ b/res/res_fax.c<br>@@ -978,7 +978,6 @@<br> AST_RWLIST_WRLOCK(&faxmodules);<br> AST_RWLIST_INSERT_TAIL(&faxmodules, fax, list);<br> AST_RWLIST_UNLOCK(&faxmodules);<br>- ast_module_ref(ast_module_info->self);<br> <br> ast_verb(3, "Registered handler for '%s' (%s)\n", fax->tech->type, fax->tech->description);<br> <br>@@ -998,7 +997,6 @@<br> continue;<br> }<br> AST_RWLIST_REMOVE_CURRENT(list);<br>- ast_module_unref(ast_module_info->self);<br> ast_free(fax);<br> ast_verb(4, "Unregistered FAX module type '%s'\n", tech->type);<br> break;<br>diff --git a/res/res_http_websocket.c b/res/res_http_websocket.c<br>index 86a1547..bcad1c3 100644<br>--- a/res/res_http_websocket.c<br>+++ b/res/res_http_websocket.c<br>@@ -131,24 +131,18 @@<br> struct ao2_container *protocols; /*!< Container for registered protocols */<br> };<br> <br>-static void websocket_server_internal_dtor(void *obj)<br>+static void websocket_server_dtor(void *obj)<br> {<br> struct ast_websocket_server *server = obj;<br> ao2_cleanup(server->protocols);<br> server->protocols = NULL;<br> }<br> <br>-static void websocket_server_dtor(void *obj)<br>-{<br>- websocket_server_internal_dtor(obj);<br>- ast_module_unref(ast_module_info->self);<br>-}<br>-<br>-static struct ast_websocket_server *websocket_server_create_impl(void (*dtor)(void *))<br>+static struct ast_websocket_server *websocket_server_create_impl(void)<br> {<br> RAII_VAR(struct ast_websocket_server *, server, NULL, ao2_cleanup);<br> <br>- server = ao2_alloc(sizeof(*server), dtor);<br>+ server = ao2_alloc(sizeof(*server), websocket_server_dtor);<br> if (!server) {<br> return NULL;<br> }<br>@@ -164,13 +158,12 @@<br> <br> static struct ast_websocket_server *websocket_server_internal_create(void)<br> {<br>- return websocket_server_create_impl(websocket_server_internal_dtor);<br>+ return websocket_server_create_impl();<br> }<br> <br> struct ast_websocket_server *AST_OPTIONAL_API_NAME(ast_websocket_server_create)(void)<br> {<br>- ast_module_ref(ast_module_info->self);<br>- return websocket_server_create_impl(websocket_server_dtor);<br>+ return websocket_server_create_impl();<br> }<br> <br> /*! \brief Destructor function for sessions */<br>@@ -997,11 +990,7 @@<br> <br> int AST_OPTIONAL_API_NAME(ast_websocket_add_protocol)(const char *name, ast_websocket_callback callback)<br> {<br>- int res = websocket_add_protocol_internal(name, callback);<br>- if (res == 0) {<br>- ast_module_ref(ast_module_info->self);<br>- }<br>- return res;<br>+ return websocket_add_protocol_internal(name, callback);<br> }<br> <br> int AST_OPTIONAL_API_NAME(ast_websocket_add_protocol2)(struct ast_websocket_protocol *protocol)<br>@@ -1016,7 +1005,6 @@<br> return -1;<br> }<br> <br>- ast_module_ref(ast_module_info->self);<br> return 0;<br> }<br> <br>@@ -1031,11 +1019,7 @@<br> <br> int AST_OPTIONAL_API_NAME(ast_websocket_remove_protocol)(const char *name, ast_websocket_callback callback)<br> {<br>- int res = websocket_remove_protocol_internal(name, callback);<br>- if (res == 0) {<br>- ast_module_unref(ast_module_info->self);<br>- }<br>- return res;<br>+ return websocket_remove_protocol_internal(name, callback);<br> }<br> <br> /*! \brief Parse the given uri into a path and remote address.<br>@@ -1456,9 +1440,6 @@<br> }<br> ast_http_uri_link(&websocketuri);<br> websocket_add_protocol_internal("echo", websocket_echo_callback);<br>-<br>- /* For Optional API. */<br>- ast_module_shutdown_ref(AST_MODULE_SELF);<br> <br> return 0;<br> }<br>diff --git a/res/res_monitor.c b/res/res_monitor.c<br>index 9dcbdbe..c67b37e 100644<br>--- a/res/res_monitor.c<br>+++ b/res/res_monitor.c<br>@@ -985,9 +985,6 @@<br> ast_manager_register_xml("PauseMonitor", EVENT_FLAG_CALL, pause_monitor_action);<br> ast_manager_register_xml("UnpauseMonitor", EVENT_FLAG_CALL, unpause_monitor_action);<br> <br>- /* For Optional API. */<br>- ast_module_shutdown_ref(AST_MODULE_SELF);<br>-<br> return AST_MODULE_LOAD_SUCCESS;<br> }<br> <br>diff --git a/res/res_mwi_external.c b/res/res_mwi_external.c<br>index d797991..82c74b9 100644<br>--- a/res/res_mwi_external.c<br>+++ b/res/res_mwi_external.c<br>@@ -81,16 +81,6 @@<br> <br> static struct ast_sorcery *mwi_sorcery;<br> <br>-void ast_mwi_external_ref(void)<br>-{<br>- ast_module_ref(ast_module_info->self);<br>-}<br>-<br>-void ast_mwi_external_unref(void)<br>-{<br>- ast_module_unref(ast_module_info->self);<br>-}<br>-<br> /*!<br> * \internal<br> * \brief Post an update event to the MWI counts.<br>diff --git a/res/res_mwi_external_ami.c b/res/res_mwi_external_ami.c<br>index 8639fad..e4d5054 100644<br>--- a/res/res_mwi_external_ami.c<br>+++ b/res/res_mwi_external_ami.c<br>@@ -342,17 +342,12 @@<br> ast_manager_unregister("MWIDelete");<br> ast_manager_unregister("MWIUpdate");<br> <br>- /* Must be done last */<br>- ast_mwi_external_unref();<br> return 0;<br> }<br> <br> static int load_module(void)<br> {<br> int res;<br>-<br>- /* Must be done first */<br>- ast_mwi_external_ref();<br> <br> res = 0;<br> res |= ast_manager_register_xml("MWIGet", EVENT_FLAG_CALL | EVENT_FLAG_REPORTING, mwi_mailbox_get);<br>diff --git a/res/res_pjproject.c b/res/res_pjproject.c<br>index 6137898..f506a62 100644<br>--- a/res/res_pjproject.c<br>+++ b/res/res_pjproject.c<br>@@ -280,16 +280,6 @@<br> ast_mutex_unlock(&pjproject_log_intercept_lock);<br> }<br> <br>-void ast_pjproject_ref(void)<br>-{<br>- ast_module_ref(ast_module_info->self);<br>-}<br>-<br>-void ast_pjproject_unref(void)<br>-{<br>- ast_module_unref(ast_module_info->self);<br>-}<br>-<br> static char *handle_pjproject_show_buildopts(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)<br> {<br> int i;<br>diff --git a/res/res_pjsip.c b/res/res_pjsip.c<br>index 3f9574d..ad601cc 100644<br>--- a/res/res_pjsip.c<br>+++ b/res/res_pjsip.c<br>@@ -2604,7 +2604,7 @@<br> /*! Local host address for IPv6 (string form) */<br> static char host_ip_ipv6_string[PJ_INET6_ADDRSTRLEN];<br> <br>-static int register_service_noref(void *data)<br>+static int register_service(void *data)<br> {<br> pjsip_module **module = data;<br> if (!ast_pjsip_endpoint) {<br>@@ -2619,23 +2619,12 @@<br> return 0;<br> }<br> <br>-int internal_sip_register_service(pjsip_module *module)<br>+int ast_sip_register_service(pjsip_module *module)<br> {<br>- return ast_sip_push_task_synchronous(NULL, register_service_noref, &module);<br>+ return ast_sip_push_task_synchronous(NULL, register_service, &module);<br> }<br> <br>-int __ast_sip_register_service(pjsip_module *module, const char *file, int line, const char *func)<br>-{<br>- int res;<br>-<br>- if (!(res = ast_sip_push_task_synchronous(NULL, register_service_noref, &module))) {<br>- __ast_module_ref(ast_module_info->self, file, line, func);<br>- }<br>-<br>- return res;<br>-}<br>-<br>-static int unregister_service_noref(void *data)<br>+static int unregister_service(void *data)<br> {<br> pjsip_module **module = data;<br> if (!ast_pjsip_endpoint) {<br>@@ -2646,16 +2635,9 @@<br> return 0;<br> }<br> <br>-int internal_sip_unregister_service(pjsip_module *module)<br>+void ast_sip_unregister_service(pjsip_module *module)<br> {<br>- return ast_sip_push_task_synchronous(NULL, unregister_service_noref, &module);<br>-}<br>-<br>-void __ast_sip_unregister_service(pjsip_module *module, const char *file, int line, const char *func)<br>-{<br>- if (!ast_sip_push_task_synchronous(NULL, unregister_service_noref, &module)) {<br>- __ast_module_unref(ast_module_info->self, file, line, func);<br>- }<br>+ ast_sip_push_task_synchronous(NULL, unregister_service, &module);<br> }<br> <br> static struct ast_sip_authenticator *registered_authenticator;<br>@@ -2668,7 +2650,7 @@<br> }<br> registered_authenticator = auth;<br> ast_debug(1, "Registered SIP authenticator module %p\n", auth);<br>- ast_module_ref(ast_module_info->self);<br>+<br> return 0;<br> }<br> <br>@@ -2681,7 +2663,6 @@<br> }<br> registered_authenticator = NULL;<br> ast_debug(1, "Unregistered SIP authenticator %p\n", auth);<br>- ast_module_unref(ast_module_info->self);<br> }<br> <br> int ast_sip_requires_authentication(struct ast_sip_endpoint *endpoint, pjsip_rx_data *rdata)<br>@@ -2714,7 +2695,7 @@<br> }<br> registered_outbound_authenticator = auth;<br> ast_debug(1, "Registered SIP outbound authenticator module %p\n", auth);<br>- ast_module_ref(ast_module_info->self);<br>+<br> return 0;<br> }<br> <br>@@ -2727,7 +2708,6 @@<br> }<br> registered_outbound_authenticator = NULL;<br> ast_debug(1, "Unregistered SIP outbound authenticator %p\n", auth);<br>- ast_module_unref(ast_module_info->self);<br> }<br> <br> int ast_sip_create_request_with_auth(const struct ast_sip_auth_vector *auths, pjsip_rx_data *challenge,<br>@@ -2769,7 +2749,6 @@<br> if (ast_strlen_zero(name)) {<br> /* if an identifier has no name then place in front */<br> AST_RWLIST_INSERT_HEAD(&endpoint_identifiers, id_list_item, list);<br>- ast_module_ref(ast_module_info->self);<br> return 0;<br> }<br> <br>@@ -2779,8 +2758,6 @@<br> if (ast_strlen_zero(identifier_order)) {<br> id_list_item->priority = UINT_MAX;<br> AST_RWLIST_INSERT_TAIL(&endpoint_identifiers, id_list_item, list);<br>- ast_module_ref(ast_module_info->self);<br>- ast_free(identifier_order);<br> return 0;<br> }<br> <br>@@ -2807,7 +2784,6 @@<br> /* if not in the endpoint_identifier_order list then consider it less in<br> priority and add it to the end */<br> AST_RWLIST_INSERT_TAIL(&endpoint_identifiers, id_list_item, list);<br>- ast_module_ref(ast_module_info->self);<br> ast_free(identifier_order);<br> return 0;<br> }<br>@@ -2825,7 +2801,6 @@<br> }<br> AST_RWLIST_TRAVERSE_SAFE_END;<br> <br>- ast_module_ref(ast_module_info->self);<br> ast_free(identifier_order);<br> return 0;<br> }<br>@@ -2844,7 +2819,6 @@<br> AST_RWLIST_REMOVE_CURRENT(list);<br> ast_free(iter);<br> ast_debug(1, "Unregistered endpoint identifier %p\n", identifier);<br>- ast_module_unref(ast_module_info->self);<br> break;<br> }<br> }<br>@@ -2987,23 +2961,17 @@<br> <br> AST_RWLIST_HEAD_STATIC(endpoint_formatters, ast_sip_endpoint_formatter);<br> <br>-void internal_sip_register_endpoint_formatter(struct ast_sip_endpoint_formatter *obj)<br>+void ast_sip_register_endpoint_formatter(struct ast_sip_endpoint_formatter *obj)<br> {<br> SCOPED_LOCK(lock, &endpoint_formatters, AST_RWLIST_WRLOCK, AST_RWLIST_UNLOCK);<br> AST_RWLIST_INSERT_TAIL(&endpoint_formatters, obj, next);<br> }<br> <br>-int ast_sip_register_endpoint_formatter(struct ast_sip_endpoint_formatter *obj)<br>-{<br>- internal_sip_register_endpoint_formatter(obj);<br>- ast_module_ref(ast_module_info->self);<br>- return 0;<br>-}<br>-<br>-int internal_sip_unregister_endpoint_formatter(struct ast_sip_endpoint_formatter *obj)<br>+void ast_sip_unregister_endpoint_formatter(struct ast_sip_endpoint_formatter *obj)<br> {<br> struct ast_sip_endpoint_formatter *i;<br> SCOPED_LOCK(lock, &endpoint_formatters, AST_RWLIST_WRLOCK, AST_RWLIST_UNLOCK);<br>+<br> AST_RWLIST_TRAVERSE_SAFE_BEGIN(&endpoint_formatters, i, next) {<br> if (i == obj) {<br> AST_RWLIST_REMOVE_CURRENT(next);<br>@@ -3011,14 +2979,6 @@<br> }<br> }<br> AST_RWLIST_TRAVERSE_SAFE_END;<br>- return i == obj ? 0 : -1;<br>-}<br>-<br>-void ast_sip_unregister_endpoint_formatter(struct ast_sip_endpoint_formatter *obj)<br>-{<br>- if (!internal_sip_unregister_endpoint_formatter(obj)) {<br>- ast_module_unref(ast_module_info->self);<br>- }<br> }<br> <br> int ast_sip_format_endpoint_ami(struct ast_sip_endpoint *endpoint,<br>@@ -3705,7 +3665,7 @@<br> <br> AST_RWLIST_HEAD_STATIC(supplements, ast_sip_supplement);<br> <br>-void internal_sip_register_supplement(struct ast_sip_supplement *supplement)<br>+void ast_sip_register_supplement(struct ast_sip_supplement *supplement)<br> {<br> struct ast_sip_supplement *iter;<br> int inserted = 0;<br>@@ -3725,39 +3685,18 @@<br> }<br> }<br> <br>-int __ast_sip_register_supplement(struct ast_sip_supplement *supplement,<br>- const char *file, int line, const char *func)<br>-{<br>- internal_sip_register_supplement(supplement);<br>- __ast_module_ref(ast_module_info->self, file, line, func);<br>-<br>- return 0;<br>-}<br>-<br>-int internal_sip_unregister_supplement(struct ast_sip_supplement *supplement)<br>+void ast_sip_unregister_supplement(struct ast_sip_supplement *supplement)<br> {<br> struct ast_sip_supplement *iter;<br> SCOPED_LOCK(lock, &supplements, AST_RWLIST_WRLOCK, AST_RWLIST_UNLOCK);<br>- int res = -1;<br> <br> AST_RWLIST_TRAVERSE_SAFE_BEGIN(&supplements, iter, next) {<br> if (supplement == iter) {<br> AST_RWLIST_REMOVE_CURRENT(next);<br>- res = 0;<br> break;<br> }<br> }<br> AST_RWLIST_TRAVERSE_SAFE_END;<br>-<br>- return res;<br>-}<br>-<br>-void __ast_sip_unregister_supplement(struct ast_sip_supplement *supplement,<br>- const char *file, int line, const char *func)<br>-{<br>- if (!internal_sip_unregister_supplement(supplement)) {<br>- __ast_module_unref(ast_module_info->self, file, line, func);<br>- }<br> }<br> <br> static int send_in_dialog_request(pjsip_tx_data *tdata, struct pjsip_dialog *dlg)<br>@@ -4887,7 +4826,7 @@<br> ast_res_pjsip_destroy_configuration();<br> ast_sip_destroy_system();<br> ast_sip_destroy_global_headers();<br>- internal_sip_unregister_service(&supplement_module);<br>+ ast_sip_unregister_service(&supplement_module);<br> ast_sip_destroy_transport_events();<br> }<br> <br>@@ -5054,7 +4993,7 @@<br> goto error;<br> }<br> <br>- if (internal_sip_register_service(&supplement_module)) {<br>+ if (ast_sip_register_service(&supplement_module)) {<br> ast_log(LOG_ERROR, "Failed to initialize supplement hooks. Aborting load\n");<br> goto error;<br> }<br>@@ -5070,8 +5009,6 @@<br> <br> AST_TEST_REGISTER(xml_sanitization_end_null);<br> AST_TEST_REGISTER(xml_sanitization_exceeds_buffer);<br>-<br>- ast_pjproject_ref();<br> <br> return AST_MODULE_LOAD_SUCCESS;<br> <br>@@ -5113,8 +5050,6 @@<br> ast_sip_destroy_scheduler();<br> serializer_pool_shutdown();<br> ast_threadpool_shutdown(sip_threadpool);<br>-<br>- ast_pjproject_unref();<br> <br> return 0;<br> }<br>diff --git a/res/res_pjsip/config_auth.c b/res/res_pjsip/config_auth.c<br>index 4732681..b1bf9c4 100644<br>--- a/res/res_pjsip/config_auth.c<br>+++ b/res/res_pjsip/config_auth.c<br>@@ -374,7 +374,7 @@<br> ast_sorcery_object_field_register_custom(sorcery, SIP_SORCERY_AUTH_TYPE, "auth_type",<br> "userpass", auth_type_handler, auth_type_to_str, NULL, 0, 0);<br> <br>- internal_sip_register_endpoint_formatter(&endpoint_auth_formatter);<br>+ ast_sip_register_endpoint_formatter(&endpoint_auth_formatter);<br> <br> cli_formatter = ao2_alloc(sizeof(struct ast_sip_cli_formatter_entry), NULL);<br> if (!cli_formatter) {<br>@@ -403,7 +403,7 @@<br> {<br> ast_cli_unregister_multiple(cli_commands, ARRAY_LEN(cli_commands));<br> ast_sip_unregister_cli_formatter(cli_formatter);<br>- internal_sip_unregister_endpoint_formatter(&endpoint_auth_formatter);<br>+ ast_sip_unregister_endpoint_formatter(&endpoint_auth_formatter);<br> <br> ast_manager_unregister("PJSIPShowAuths");<br> <br>diff --git a/res/res_pjsip/config_transport.c b/res/res_pjsip/config_transport.c<br>index 63bf118..d08b33b 100644<br>--- a/res/res_pjsip/config_transport.c<br>+++ b/res/res_pjsip/config_transport.c<br>@@ -1435,7 +1435,7 @@<br> ast_sorcery_object_field_register(sorcery, "transport", "allow_reload", "no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_transport, allow_reload));<br> ast_sorcery_object_field_register(sorcery, "transport", "symmetric_transport", "no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_transport, symmetric_transport));<br> <br>- internal_sip_register_endpoint_formatter(&endpoint_transport_formatter);<br>+ ast_sip_register_endpoint_formatter(&endpoint_transport_formatter);<br> <br> cli_formatter = ao2_alloc(sizeof(struct ast_sip_cli_formatter_entry), NULL);<br> if (!cli_formatter) {<br>@@ -1465,7 +1465,7 @@<br> ast_cli_unregister_multiple(cli_commands, ARRAY_LEN(cli_commands));<br> ast_sip_unregister_cli_formatter(cli_formatter);<br> <br>- internal_sip_unregister_endpoint_formatter(&endpoint_transport_formatter);<br>+ ast_sip_unregister_endpoint_formatter(&endpoint_transport_formatter);<br> <br> ao2_ref(transport_states, -1);<br> transport_states = NULL;<br>diff --git a/res/res_pjsip/include/res_pjsip_private.h b/res/res_pjsip/include/res_pjsip_private.h<br>index 5ce3c6f..7fafd80 100644<br>--- a/res/res_pjsip/include/res_pjsip_private.h<br>+++ b/res/res_pjsip/include/res_pjsip_private.h<br>@@ -314,55 +314,7 @@<br> */<br> int sip_cli_print_system(struct ast_sip_cli_context *context);<br> <br>-/*!<br>- * \internal<br>- * \brief Used by res_pjsip.so to register a service without adding a self reference<br>- */<br>-int internal_sip_register_service(pjsip_module *module);<br>-<br>-/*!<br>- * \internal<br>- * \brief Used by res_pjsip.so to unregister a service without removing a self reference<br>- */<br>-int internal_sip_unregister_service(pjsip_module *module);<br>-<br>-/*!<br>- * \internal<br>- * \brief Used by res_pjsip.so to register a supplement without adding a self reference<br>- */<br>-void internal_sip_register_supplement(struct ast_sip_supplement *supplement);<br>-<br>-/*!<br>- * \internal<br>- * \brief Used by res_pjsip.so to unregister a supplement without removing a self reference<br>- */<br>-int internal_sip_unregister_supplement(struct ast_sip_supplement *supplement);<br>-<br>-/*!<br>- * \internal<br>- * \brief Used by res_pjsip.so to register an endpoint formatter without adding a self reference<br>- */<br>-void internal_sip_register_endpoint_formatter(struct ast_sip_endpoint_formatter *obj);<br>-<br>-/*!<br>- * \internal<br>- * \brief Used by res_pjsip.so to unregister a endpoint formatter without removing a self reference<br>- */<br>-int internal_sip_unregister_endpoint_formatter(struct ast_sip_endpoint_formatter *obj);<br>-<br> struct ast_sip_session_supplement;<br>-<br>-/*!<br>- * \internal<br>- * \brief Used by res_pjsip.so to register a session supplement without adding a self reference<br>- */<br>-void internal_sip_session_register_supplement(struct ast_sip_session_supplement *supplement);<br>-<br>-/*!<br>- * \internal<br>- * \brief Used by res_pjsip.so to unregister a session supplement without removing a self reference<br>- */<br>-int internal_sip_session_unregister_supplement(struct ast_sip_session_supplement *supplement);<br> <br> /*!<br> * \internal<br>diff --git a/res/res_pjsip/location.c b/res/res_pjsip/location.c<br>index eb9e588..84f73c7 100644<br>--- a/res/res_pjsip/location.c<br>+++ b/res/res_pjsip/location.c<br>@@ -1346,7 +1346,7 @@<br> ast_sorcery_object_field_register(sorcery, "aor", "outbound_proxy", "", OPT_STRINGFIELD_T, 0, STRFLDSET(struct ast_sip_aor, outbound_proxy));<br> ast_sorcery_object_field_register(sorcery, "aor", "support_path", "no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_aor, support_path));<br> <br>- internal_sip_register_endpoint_formatter(&endpoint_aor_formatter);<br>+ ast_sip_register_endpoint_formatter(&endpoint_aor_formatter);<br> <br> contact_formatter = ao2_alloc(sizeof(struct ast_sip_cli_formatter_entry), NULL);<br> if (!contact_formatter) {<br>@@ -1402,7 +1402,7 @@<br> ast_sip_unregister_cli_formatter(aor_formatter);<br> ast_manager_unregister("PJSIPShowAors");<br> <br>- internal_sip_unregister_endpoint_formatter(&endpoint_aor_formatter);<br>+ ast_sip_unregister_endpoint_formatter(&endpoint_aor_formatter);<br> <br> return 0;<br> }<br>diff --git a/res/res_pjsip/pjsip_distributor.c b/res/res_pjsip/pjsip_distributor.c<br>index b4828d8..c239c1a 100644<br>--- a/res/res_pjsip/pjsip_distributor.c<br>+++ b/res/res_pjsip/pjsip_distributor.c<br>@@ -1243,15 +1243,15 @@<br> return -1;<br> }<br> <br>- if (internal_sip_register_service(&distributor_mod)) {<br>+ if (ast_sip_register_service(&distributor_mod)) {<br> ast_sip_destroy_distributor();<br> return -1;<br> }<br>- if (internal_sip_register_service(&endpoint_mod)) {<br>+ if (ast_sip_register_service(&endpoint_mod)) {<br> ast_sip_destroy_distributor();<br> return -1;<br> }<br>- if (internal_sip_register_service(&auth_mod)) {<br>+ if (ast_sip_register_service(&auth_mod)) {<br> ast_sip_destroy_distributor();<br> return -1;<br> }<br>@@ -1282,9 +1282,9 @@<br> ast_cli_unregister_multiple(cli_commands, ARRAY_LEN(cli_commands));<br> ast_sip_unregister_cli_formatter(unid_formatter);<br> <br>- internal_sip_unregister_service(&auth_mod);<br>- internal_sip_unregister_service(&endpoint_mod);<br>- internal_sip_unregister_service(&distributor_mod);<br>+ ast_sip_unregister_service(&auth_mod);<br>+ ast_sip_unregister_service(&endpoint_mod);<br>+ ast_sip_unregister_service(&distributor_mod);<br> <br> ao2_global_obj_release(artificial_auth);<br> ao2_cleanup(artificial_endpoint);<br>diff --git a/res/res_pjsip/pjsip_global_headers.c b/res/res_pjsip/pjsip_global_headers.c<br>index 4de28b5..52075ae 100644<br>--- a/res/res_pjsip/pjsip_global_headers.c<br>+++ b/res/res_pjsip/pjsip_global_headers.c<br>@@ -165,7 +165,7 @@<br> AST_RWLIST_HEAD_INIT(&request_headers);<br> AST_RWLIST_HEAD_INIT(&response_headers);<br> <br>- internal_sip_register_service(&global_header_mod);<br>+ ast_sip_register_service(&global_header_mod);<br> }<br> <br> static void destroy_headers(struct header_list *headers)<br>@@ -183,5 +183,5 @@<br> destroy_headers(&request_headers);<br> destroy_headers(&response_headers);<br> <br>- internal_sip_unregister_service(&global_header_mod);<br>+ ast_sip_unregister_service(&global_header_mod);<br> }<br>diff --git a/res/res_pjsip/pjsip_message_filter.c b/res/res_pjsip/pjsip_message_filter.c<br>index 427aec7..f948c44 100644<br>--- a/res/res_pjsip/pjsip_message_filter.c<br>+++ b/res/res_pjsip/pjsip_message_filter.c<br>@@ -517,24 +517,24 @@<br> <br> void ast_res_pjsip_cleanup_message_filter(void)<br> {<br>- internal_sip_unregister_service(&filter_module_tsx);<br>- internal_sip_unregister_service(&filter_module_transport);<br>- internal_sip_unregister_supplement(&filter_supplement);<br>- internal_sip_session_unregister_supplement(&filter_session_supplement);<br>+ ast_sip_unregister_service(&filter_module_tsx);<br>+ ast_sip_unregister_service(&filter_module_transport);<br>+ ast_sip_unregister_supplement(&filter_supplement);<br>+ ast_sip_session_unregister_supplement(&filter_session_supplement);<br> }<br> <br> int ast_res_pjsip_init_message_filter(void)<br> {<br>- internal_sip_session_register_supplement(&filter_session_supplement);<br>- internal_sip_register_supplement(&filter_supplement);<br>+ ast_sip_session_register_supplement(&filter_session_supplement);<br>+ ast_sip_register_supplement(&filter_supplement);<br> <br>- if (internal_sip_register_service(&filter_module_transport)) {<br>+ if (ast_sip_register_service(&filter_module_transport)) {<br> ast_log(LOG_ERROR, "Could not register message filter module for incoming and outgoing requests\n");<br> ast_res_pjsip_cleanup_message_filter();<br> return -1;<br> }<br> <br>- if (internal_sip_register_service(&filter_module_tsx)) {<br>+ if (ast_sip_register_service(&filter_module_tsx)) {<br> ast_log(LOG_ERROR, "Could not register message filter module for incoming and outgoing requests\n");<br> ast_res_pjsip_cleanup_message_filter();<br> return -1;<br>diff --git a/res/res_pjsip/pjsip_options.c b/res/res_pjsip/pjsip_options.c<br>index 9d7402b..5d3f234 100644<br>--- a/res/res_pjsip/pjsip_options.c<br>+++ b/res/res_pjsip/pjsip_options.c<br>@@ -1477,7 +1477,7 @@<br> return -1;<br> }<br> <br>- internal_sip_register_endpoint_formatter(&contact_status_formatter);<br>+ ast_sip_register_endpoint_formatter(&contact_status_formatter);<br> ast_manager_register_xml("PJSIPQualify", EVENT_FLAG_SYSTEM | EVENT_FLAG_REPORTING, ami_sip_qualify);<br> ast_cli_register_multiple(cli_options, ARRAY_LEN(cli_options));<br> <br>@@ -1491,7 +1491,7 @@<br> {<br> ast_cli_unregister_multiple(cli_options, ARRAY_LEN(cli_options));<br> ast_manager_unregister("PJSIPQualify");<br>- internal_sip_unregister_endpoint_formatter(&contact_status_formatter);<br>+ ast_sip_unregister_endpoint_formatter(&contact_status_formatter);<br> <br> ast_sorcery_observer_remove(ast_sip_get_sorcery(), "aor", &observer_callbacks_options);<br> pjsip_endpt_unregister_module(ast_sip_get_pjsip_endpoint(), &options_module);<br>diff --git a/res/res_pjsip/pjsip_session.c b/res/res_pjsip/pjsip_session.c<br>index 153561c..f3f3a4d 100644<br>--- a/res/res_pjsip/pjsip_session.c<br>+++ b/res/res_pjsip/pjsip_session.c<br>@@ -32,7 +32,7 @@<br> <br> AST_RWLIST_HEAD_STATIC(session_supplements, ast_sip_session_supplement);<br> <br>-void internal_sip_session_register_supplement(struct ast_sip_session_supplement *supplement)<br>+void ast_sip_session_register_supplement(struct ast_sip_session_supplement *supplement)<br> {<br> struct ast_sip_session_supplement *iter;<br> int inserted = 0;<br>@@ -56,39 +56,18 @@<br> }<br> }<br> <br>-int __ast_sip_session_register_supplement(struct ast_sip_session_supplement *supplement,<br>- const char *file, int line, const char *func)<br>-{<br>- internal_sip_session_register_supplement(supplement);<br>- __ast_module_ref(AST_MODULE_SELF, file, line, func);<br>-<br>- return 0;<br>-}<br>-<br>-int internal_sip_session_unregister_supplement(struct ast_sip_session_supplement *supplement)<br>+void ast_sip_session_unregister_supplement(struct ast_sip_session_supplement *supplement)<br> {<br> struct ast_sip_session_supplement *iter;<br>- int res = -1;<br> SCOPED_LOCK(lock, &session_supplements, AST_RWLIST_WRLOCK, AST_RWLIST_UNLOCK);<br> <br> AST_RWLIST_TRAVERSE_SAFE_BEGIN(&session_supplements, iter, next) {<br> if (supplement == iter) {<br> AST_RWLIST_REMOVE_CURRENT(next);<br>- res = 0;<br> break;<br> }<br> }<br> AST_RWLIST_TRAVERSE_SAFE_END;<br>-<br>- return res;<br>-}<br>-<br>-void __ast_sip_session_unregister_supplement(struct ast_sip_session_supplement *supplement,<br>- const char *file, int line, const char *func)<br>-{<br>- if (!internal_sip_session_unregister_supplement(supplement)) {<br>- __ast_module_unref(AST_MODULE_SELF, file, line, func);<br>- }<br> }<br> <br> static struct ast_sip_session_supplement *supplement_dup(const struct ast_sip_session_supplement *src)<br>diff --git a/res/res_pjsip_config_wizard.c b/res/res_pjsip_config_wizard.c<br>index 3a761a7..04555da 100644<br>--- a/res/res_pjsip_config_wizard.c<br>+++ b/res/res_pjsip_config_wizard.c<br>@@ -1199,21 +1199,18 @@<br> }<br> }<br> <br>-/*! \brief When the res_pjsip instance is created, add an observer to it and initialize the wizard vector.<br>- * Also, bump the module's ref count so it can't be unloaded before the sorcery instance is<br>- * destroyed.<br>+/*! \brief When the res_pjsip instance is created, add an observer to it and<br>+ * initialize the wizard vector.<br> */<br> static void instance_created_observer(const char *name, struct ast_sorcery *sorcery)<br> {<br> if (strcmp(name, "res_pjsip")) {<br> return;<br> }<br>- ast_module_ref(ast_module_info->self);<br> ast_sorcery_instance_observer_add(sorcery, &observer);<br> }<br> <br>-/*! \brief When the res_pjsip instance is destroyed, remove the observer<br>- * and unref the module. This should then allow this module to unload cleanly.<br>+/*! \brief When the res_pjsip instance is destroyed, remove the observer.<br> */<br> static void instance_destroying_observer(const char *name, struct ast_sorcery *sorcery)<br> {<br>@@ -1222,7 +1219,6 @@<br> }<br> <br> ast_sorcery_instance_observer_remove(sorcery, &observer);<br>- ast_module_unref(ast_module_info->self);<br> }<br> <br> static char *handle_export_primitives(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)<br>diff --git a/res/res_pjsip_dlg_options.c b/res/res_pjsip_dlg_options.c<br>index 565ad2a..924df06 100644<br>--- a/res/res_pjsip_dlg_options.c<br>+++ b/res/res_pjsip_dlg_options.c<br>@@ -85,9 +85,8 @@<br> {<br> CHECK_PJSIP_MODULE_LOADED();<br> <br>- if (ast_sip_session_register_supplement(&dlg_options_supplement)) {<br>- return AST_MODULE_LOAD_DECLINE;<br>- }<br>+ ast_sip_session_register_supplement(&dlg_options_supplement);<br>+<br> return AST_MODULE_LOAD_SUCCESS;<br> }<br> <br>diff --git a/res/res_pjsip_nat.c b/res/res_pjsip_nat.c<br>index 4231a1e..406e1fe 100644<br>--- a/res/res_pjsip_nat.c<br>+++ b/res/res_pjsip_nat.c<br>@@ -364,11 +364,7 @@<br> return AST_MODULE_LOAD_DECLINE;<br> }<br> <br>- if (ast_sip_session_register_supplement(&nat_supplement)) {<br>- ast_log(LOG_ERROR, "Could not register NAT session supplement for incoming and outgoing INVITE requests\n");<br>- unload_module();<br>- return AST_MODULE_LOAD_DECLINE;<br>- }<br>+ ast_sip_session_register_supplement(&nat_supplement);<br> <br> return AST_MODULE_LOAD_SUCCESS;<br> }<br>diff --git a/res/res_pjsip_one_touch_record_info.c b/res/res_pjsip_one_touch_record_info.c<br>index ef59fca..dda8d85 100644<br>--- a/res/res_pjsip_one_touch_record_info.c<br>+++ b/res/res_pjsip_one_touch_record_info.c<br>@@ -109,10 +109,7 @@<br> {<br> CHECK_PJSIP_SESSION_MODULE_LOADED();<br> <br>- if (ast_sip_session_register_supplement(&info_supplement)) {<br>- ast_log(LOG_ERROR, "Unable to register One Touch Recording supplement\n");<br>- return AST_MODULE_LOAD_DECLINE;<br>- }<br>+ ast_sip_session_register_supplement(&info_supplement);<br> <br> return AST_MODULE_LOAD_SUCCESS;<br> }<br>diff --git a/res/res_pjsip_outbound_publish.c b/res/res_pjsip_outbound_publish.c<br>index b4e3320..692a104 100644<br>--- a/res/res_pjsip_outbound_publish.c<br>+++ b/res/res_pjsip_outbound_publish.c<br>@@ -345,7 +345,6 @@<br> static void sub_add_handler(struct ast_sip_event_publisher_handler *handler)<br> {<br> AST_RWLIST_INSERT_TAIL(&publisher_handlers, handler, next);<br>- ast_module_ref(ast_module_info->self);<br> }<br> <br> static struct ast_sip_event_publisher_handler *find_publisher_handler_for_event_name(const char *event_name)<br>@@ -643,7 +642,6 @@<br> AST_RWLIST_TRAVERSE_SAFE_BEGIN(&publisher_handlers, iter, next) {<br> if (handler == iter) {<br> AST_RWLIST_REMOVE_CURRENT(next);<br>- ast_module_unref(ast_module_info->self);<br> break;<br> }<br> }<br>diff --git a/res/res_pjsip_path.c b/res/res_pjsip_path.c<br>index b245f15..80937c2 100644<br>--- a/res/res_pjsip_path.c<br>+++ b/res/res_pjsip_path.c<br>@@ -240,14 +240,8 @@<br> {<br> CHECK_PJSIP_SESSION_MODULE_LOADED();<br> <br>- if (ast_sip_register_supplement(&path_supplement)) {<br>- return AST_MODULE_LOAD_DECLINE;<br>- }<br>-<br>- if (ast_sip_session_register_supplement(&path_session_supplement)) {<br>- ast_sip_unregister_supplement(&path_supplement);<br>- return AST_MODULE_LOAD_DECLINE;<br>- }<br>+ ast_sip_register_supplement(&path_supplement);<br>+ ast_sip_session_register_supplement(&path_session_supplement);<br> <br> return AST_MODULE_LOAD_SUCCESS;<br> }<br>diff --git a/res/res_pjsip_pubsub.c b/res/res_pjsip_pubsub.c<br>index af696b8..5e0d2e5 100644<br>--- a/res/res_pjsip_pubsub.c<br>+++ b/res/res_pjsip_pubsub.c<br>@@ -2583,8 +2583,6 @@<br> <br> publish_add_handler(handler);<br> <br>- ast_module_ref(ast_module_info->self);<br>-<br> return 0;<br> }<br> <br>@@ -2597,7 +2595,6 @@<br> if (handler == iter) {<br> AST_RWLIST_REMOVE_CURRENT(next);<br> ao2_cleanup(handler->publications);<br>- ast_module_unref(ast_module_info->self);<br> break;<br> }<br> }<br>@@ -2611,7 +2608,6 @@<br> {<br> AST_RWLIST_WRLOCK(&subscription_handlers);<br> AST_RWLIST_INSERT_TAIL(&subscription_handlers, handler, next);<br>- ast_module_ref(ast_module_info->self);<br> AST_RWLIST_UNLOCK(&subscription_handlers);<br> }<br> <br>@@ -2670,7 +2666,6 @@<br> AST_RWLIST_TRAVERSE_SAFE_BEGIN(&subscription_handlers, iter, next) {<br> if (handler == iter) {<br> AST_RWLIST_REMOVE_CURRENT(next);<br>- ast_module_unref(ast_module_info->self);<br> break;<br> }<br> }<br>diff --git a/res/res_pjsip_send_to_voicemail.c b/res/res_pjsip_send_to_voicemail.c<br>index 06c3edc..a5beed4 100644<br>--- a/res/res_pjsip_send_to_voicemail.c<br>+++ b/res/res_pjsip_send_to_voicemail.c<br>@@ -217,10 +217,7 @@<br> {<br> CHECK_PJSIP_SESSION_MODULE_LOADED();<br> <br>- if (ast_sip_session_register_supplement(&refer_supplement)) {<br>- ast_log(LOG_ERROR, "Unable to register Send to Voicemail supplement\n");<br>- return AST_MODULE_LOAD_DECLINE;<br>- }<br>+ ast_sip_session_register_supplement(&refer_supplement);<br> <br> return AST_MODULE_LOAD_SUCCESS;<br> }<br>diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c<br>index 8247fba..d649332 100644<br>--- a/res/res_pjsip_session.c<br>+++ b/res/res_pjsip_session.c<br>@@ -124,7 +124,7 @@<br> }<br> AST_LIST_INSERT_TAIL(&handler_list->list, handler, next);<br> ast_debug(1, "Registered SDP stream handler '%s' for stream type '%s'\n", handler->id, stream_type);<br>- ast_module_ref(ast_module_info->self);<br>+<br> return 0;<br> }<br> <br>@@ -141,7 +141,7 @@<br> return -1;<br> }<br> ast_debug(1, "Registered SDP stream handler '%s' for stream type '%s'\n", handler->id, stream_type);<br>- ast_module_ref(ast_module_info->self);<br>+<br> return 0;<br> }<br> <br>@@ -156,7 +156,6 @@<br> if (!strcmp(iter->id, handler->id)) {<br> AST_LIST_REMOVE_CURRENT(next);<br> ast_debug(1, "Unregistered SDP stream handler '%s' for stream type '%s'\n", handler->id, stream_type);<br>- ast_module_unref(ast_module_info->self);<br> }<br> }<br> AST_LIST_TRAVERSE_SAFE_END;<br>diff --git a/res/res_pjsip_t38.c b/res/res_pjsip_t38.c<br>index 7b7cd99..9b61c5d 100644<br>--- a/res/res_pjsip_t38.c<br>+++ b/res/res_pjsip_t38.c<br>@@ -1031,10 +1031,7 @@<br> ast_sockaddr_parse(&address, "0.0.0.0", 0);<br> }<br> <br>- if (ast_sip_session_register_supplement(&t38_supplement)) {<br>- ast_log(LOG_ERROR, "Unable to register T.38 session supplement\n");<br>- goto end;<br>- }<br>+ ast_sip_session_register_supplement(&t38_supplement);<br> <br> if (ast_sip_session_register_sdp_handler(&image_sdp_handler, "image")) {<br> ast_log(LOG_ERROR, "Unable to register SDP handler for image stream type\n");<br>diff --git a/res/res_pjsip_transport_websocket.c b/res/res_pjsip_transport_websocket.c<br>index af1345f..bc6068b 100644<br>--- a/res/res_pjsip_transport_websocket.c<br>+++ b/res/res_pjsip_transport_websocket.c<br>@@ -490,10 +490,7 @@<br> return AST_MODULE_LOAD_DECLINE;<br> }<br> <br>- if (ast_sip_session_register_supplement(&websocket_supplement)) {<br>- ast_sip_unregister_service(&websocket_module);<br>- return AST_MODULE_LOAD_DECLINE;<br>- }<br>+ ast_sip_session_register_supplement(&websocket_supplement);<br> <br> if (ast_websocket_add_protocol("sip", websocket_cb)) {<br> ast_sip_session_unregister_supplement(&websocket_supplement);<br>diff --git a/res/res_pktccops.c b/res/res_pktccops.c<br>index 3a12285..9beabfb 100644<br>--- a/res/res_pktccops.c<br>+++ b/res/res_pktccops.c<br>@@ -1472,9 +1472,6 @@<br> ast_cli_register_multiple(cli_pktccops, sizeof(cli_pktccops) / sizeof(struct ast_cli_entry));<br> restart_pktc_thread();<br> <br>- /* For Optional API. */<br>- ast_module_shutdown_ref(AST_MODULE_SELF);<br>-<br> return 0;<br> }<br> <br>diff --git a/res/res_smdi.c b/res/res_smdi.c<br>index 76e70c2..1d4826a 100644<br>--- a/res/res_smdi.c<br>+++ b/res/res_smdi.c<br>@@ -1405,9 +1405,6 @@<br> ast_custom_function_register(&smdi_msg_retrieve_function);<br> ast_custom_function_register(&smdi_msg_function);<br> <br>- /* For Optional API. */<br>- ast_module_shutdown_ref(AST_MODULE_SELF);<br>-<br> return AST_MODULE_LOAD_SUCCESS;<br> }<br> <br>diff --git a/res/res_stasis.c b/res/res_stasis.c<br>index a60ec5f..dcd7414 100644<br>--- a/res/res_stasis.c<br>+++ b/res/res_stasis.c<br>@@ -1302,8 +1302,6 @@<br> int stasis_app_exec(struct ast_channel *chan, const char *app_name, int argc,<br> char *argv[])<br> {<br>- SCOPED_MODULE_USE(ast_module_info->self);<br>-<br> RAII_VAR(struct stasis_app *, app, NULL, ao2_cleanup);<br> RAII_VAR(struct stasis_app_control *, control, NULL, control_unlink);<br> struct ast_bridge *bridge = NULL;<br>@@ -1654,11 +1652,6 @@<br> {<br> AST_RWLIST_WRLOCK(&event_sources);<br> AST_LIST_INSERT_TAIL(&event_sources, obj, next);<br>- /* only need to bump the module ref on non-core sources because the<br>- core ones are [un]registered by this module. */<br>- if (!stasis_app_is_core_event_source(obj)) {<br>- ast_module_ref(ast_module_info->self);<br>- }<br> AST_RWLIST_UNLOCK(&event_sources);<br> }<br> <br>@@ -1670,9 +1663,6 @@<br> AST_RWLIST_TRAVERSE_SAFE_BEGIN(&event_sources, source, next) {<br> if (source == obj) {<br> AST_RWLIST_REMOVE_CURRENT(next);<br>- if (!stasis_app_is_core_event_source(obj)) {<br>- ast_module_unref(ast_module_info->self);<br>- }<br> break;<br> }<br> }<br>@@ -2034,16 +2024,6 @@<br> ao2_ref(message, -1);<br> <br> return STASIS_APP_USER_OK;<br>-}<br>-<br>-void stasis_app_ref(void)<br>-{<br>- ast_module_ref(ast_module_info->self);<br>-}<br>-<br>-void stasis_app_unref(void)<br>-{<br>- ast_module_unref(ast_module_info->self);<br> }<br> <br> static int unload_module(void)<br>diff --git a/res/res_stasis_mailbox.c b/res/res_stasis_mailbox.c<br>index 3d0e9db..3f6bede 100644<br>--- a/res/res_stasis_mailbox.c<br>+++ b/res/res_stasis_mailbox.c<br>@@ -143,17 +143,11 @@<br> <br> static int load_module(void)<br> {<br>- /* Must be done first */<br>- ast_mwi_external_ref();<br>-<br> return AST_MODULE_LOAD_SUCCESS;<br> }<br> <br> static int unload_module(void)<br> {<br>- /* Must be done last */<br>- ast_mwi_external_unref();<br>-<br> return 0;<br> }<br> <br>diff --git a/res/res_statsd.c b/res/res_statsd.c<br>index 221b359..8e647bc 100644<br>--- a/res/res_statsd.c<br>+++ b/res/res_statsd.c<br>@@ -353,9 +353,6 @@<br> return AST_MODULE_LOAD_DECLINE;<br> }<br> <br>- /* For Optional API. */<br>- ast_module_shutdown_ref(AST_MODULE_SELF);<br>-<br> return AST_MODULE_LOAD_SUCCESS;<br> }<br> <br>diff --git a/res/stasis/app.c b/res/stasis/app.c<br>index 854e799..18ac7d6 100644<br>--- a/res/stasis/app.c<br>+++ b/res/stasis/app.c<br>@@ -1600,13 +1600,6 @@<br> stasis_app_register_event_source(&endpoint_event_source);<br> }<br> <br>-int stasis_app_is_core_event_source(struct stasis_app_event_source *obj)<br>-{<br>- return obj == &endpoint_event_source ||<br>- obj == &bridge_event_source ||<br>- obj == &channel_event_source;<br>-}<br>-<br> void stasis_app_unregister_event_sources(void)<br> {<br> stasis_app_unregister_event_source(&endpoint_event_source);<br>diff --git a/rest-api-templates/res_ari_resource.c.mustache b/rest-api-templates/res_ari_resource.c.mustache<br>index c1f680f..b70c251 100644<br>--- a/rest-api-templates/res_ari_resource.c.mustache<br>+++ b/rest-api-templates/res_ari_resource.c.mustache<br>@@ -266,7 +266,6 @@<br> ast_ari_websocket_events_event_websocket_dtor();<br> {{/has_websocket}}<br> {{/apis}}<br>- stasis_app_unref();<br> return 0;<br> }<br> <br>@@ -310,7 +309,6 @@<br> {{/operations}}<br> {{/apis}}<br> <br>- stasis_app_ref();<br> res |= ast_ari_add_handler(&{{root_full_name}});<br> if (res) {<br> unload_module();<br>diff --git a/tests/test_res_stasis.c b/tests/test_res_stasis.c<br>index 077cc4c..2c7906a 100644<br>--- a/tests/test_res_stasis.c<br>+++ b/tests/test_res_stasis.c<br>@@ -179,13 +179,11 @@<br> AST_TEST_UNREGISTER(app_invoke_dne);<br> AST_TEST_UNREGISTER(app_invoke_one);<br> AST_TEST_UNREGISTER(app_replaced);<br>- stasis_app_unref();<br> return 0;<br> }<br> <br> static int load_module(void)<br> {<br>- stasis_app_ref();<br> AST_TEST_REGISTER(app_replaced);<br> AST_TEST_REGISTER(app_invoke_one);<br> AST_TEST_REGISTER(app_invoke_dne);<br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/7989">change 7989</a>. To unsubscribe, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/7989"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I332a6e8383d4c72c8e89d988a184ab8320c4872e </div>
<div style="display:none"> Gerrit-Change-Number: 7989 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Corey Farrell <git@cfware.com> </div>