diff --git a/apps/app_confbridge.c b/apps/app_confbridge.c index f972e38b96a4d399da810990ba9050a7d006d8bd..7e6f94c341f56abc775a4635f6b4485f65273537 100644 --- a/apps/app_confbridge.c +++ b/apps/app_confbridge.c @@ -2386,11 +2386,11 @@ static int confbridge_exec(struct ast_channel *chan, const char *data) user.tech_args.drop_silence = 1; } - if (ast_test_flag(&user.u_profile, USER_OPT_JITTERBUFFER) && ast_module_check("func_jitterbuffer.so")) { + if (ast_test_flag(&user.u_profile, USER_OPT_JITTERBUFFER)) { ast_func_write(chan, "JITTERBUFFER(adaptive)", "default"); } - if (ast_test_flag(&user.u_profile, USER_OPT_DENOISE) && ast_module_check("codec_speex.so")) { + if (ast_test_flag(&user.u_profile, USER_OPT_DENOISE)) { ast_func_write(chan, "DENOISE(rx)", "on"); } @@ -4088,4 +4088,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Conference Bridge App .unload = unload_module, .reload = reload, .load_pri = AST_MODPRI_DEVSTATE_PROVIDER, + .optional_modules = "codec_speex,func_jitterbuffer", ); diff --git a/apps/app_meetme.c b/apps/app_meetme.c index 634eac8203f0382dad997110984ec252e5c7aec6..657aaa7b76034fd371f73b025e48dfab1bffd000 100644 --- a/apps/app_meetme.c +++ b/apps/app_meetme.c @@ -3588,7 +3588,7 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, struc } /* Reduce background noise from each participant */ - if (!ast_test_flag64(confflags, CONFFLAG_DONT_DENOISE) && ast_module_check("func_speex.so")) { + if (!ast_test_flag64(confflags, CONFFLAG_DONT_DENOISE)) { ast_func_write(chan, "DENOISE(rx)", "on"); } @@ -8085,4 +8085,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "MeetMe conference bri .unload = unload_module, .reload = reload, .load_pri = AST_MODPRI_DEVSTATE_PROVIDER, + .optional_modules = "func_speex", ); diff --git a/apps/app_stack.c b/apps/app_stack.c index 1f98378c96717068a6277825f51af093558d663c..4560865ab46e6c662d2f5226b0d003324f2235fe 100644 --- a/apps/app_stack.c +++ b/apps/app_stack.c @@ -1278,7 +1278,7 @@ static int unload_module(void) { ast_install_stack_functions(NULL); - ast_agi_unregister(ast_module_info->self, &gosub_agi_command); + ast_agi_unregister(&gosub_agi_command); ast_unregister_application(app_return); ast_unregister_application(app_pop); diff --git a/apps/app_stasis.c b/apps/app_stasis.c index 8d09349b92b7fa80edf5130e287dd41c1fb073f3..b98c2b4464472d35ddd57cfd9cc49cc5f90b26cf 100644 --- a/apps/app_stasis.c +++ b/apps/app_stasis.c @@ -125,19 +125,12 @@ static int app_exec(struct ast_channel *chan, const char *data) static int load_module(void) { - int r = 0; - - stasis_app_ref(); - r |= ast_register_application_xml(stasis, app_exec); - return r; + return ast_register_application_xml(stasis, app_exec); } static int unload_module(void) { - int r = 0; - r |= ast_unregister_application(stasis); - stasis_app_unref(); - return r; + return ast_unregister_application(stasis); } AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Stasis dialplan application", diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c index 68da4a1bba497226e3cc64ac9a01c517bbfc1cfa..2c111feebcddca82ee309a8bd25f662c3af32d84 100644 --- a/channels/chan_pjsip.c +++ b/channels/chan_pjsip.c @@ -2981,8 +2981,6 @@ static int load_module(void) { struct ao2_container *endpoints; - CHECK_PJSIP_SESSION_MODULE_LOADED(); - if (!(chan_pjsip_tech.capabilities = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT))) { return AST_MODULE_LOAD_DECLINE; } @@ -3016,10 +3014,7 @@ static int load_module(void) goto end; } - if (ast_sip_session_register_supplement(&chan_pjsip_supplement)) { - ast_log(LOG_ERROR, "Unable to register PJSIP supplement\n"); - goto end; - } + ast_sip_session_register_supplement(&chan_pjsip_supplement); if (!(pjsip_uids_onhold = ao2_container_alloc_hash(AO2_ALLOC_OPT_LOCK_RWLOCK, AO2_CONTAINER_ALLOC_OPT_DUPS_REJECT, 37, uid_hold_hash_fn, @@ -3028,26 +3023,9 @@ static int load_module(void) goto end; } - if (ast_sip_session_register_supplement(&call_pickup_supplement)) { - ast_log(LOG_ERROR, "Unable to register PJSIP call pickup supplement\n"); - ast_sip_session_unregister_supplement(&chan_pjsip_supplement); - goto end; - } - - if (ast_sip_session_register_supplement(&pbx_start_supplement)) { - ast_log(LOG_ERROR, "Unable to register PJSIP pbx start supplement\n"); - ast_sip_session_unregister_supplement(&chan_pjsip_supplement); - ast_sip_session_unregister_supplement(&call_pickup_supplement); - goto end; - } - - if (ast_sip_session_register_supplement(&chan_pjsip_ack_supplement)) { - ast_log(LOG_ERROR, "Unable to register PJSIP ACK supplement\n"); - ast_sip_session_unregister_supplement(&pbx_start_supplement); - ast_sip_session_unregister_supplement(&chan_pjsip_supplement); - ast_sip_session_unregister_supplement(&call_pickup_supplement); - goto end; - } + ast_sip_session_register_supplement(&call_pickup_supplement); + ast_sip_session_register_supplement(&pbx_start_supplement); + ast_sip_session_register_supplement(&chan_pjsip_ack_supplement); if (pjsip_channel_cli_register()) { ast_log(LOG_ERROR, "Unable to register PJSIP Channel CLI\n"); diff --git a/funcs/func_curl.c b/funcs/func_curl.c index ebb3dce23cb4fefe8ca1aa5d59651b53be833af0..682ad5a4287d9127f0924705e535e707685ee2d3 100644 --- a/funcs/func_curl.c +++ b/funcs/func_curl.c @@ -920,13 +920,6 @@ static int load_module(void) { int res; - if (!ast_module_check("res_curl.so")) { - if (ast_load_resource("res_curl.so") != AST_MODULE_LOAD_SUCCESS) { - ast_log(LOG_ERROR, "Cannot load res_curl, so func_curl cannot be loaded\n"); - return AST_MODULE_LOAD_DECLINE; - } - } - res = ast_custom_function_register_escalating(&acf_curl, AST_CFE_WRITE); res |= ast_custom_function_register(&acf_curlopt); @@ -940,4 +933,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Load external URL", .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_REALTIME_DEPEND2, + .requires = "res_curl", ); diff --git a/funcs/func_periodic_hook.c b/funcs/func_periodic_hook.c index 958da97288f236229efcea8a069709237fac1e97..1f66747c365c881af678f256691cbcb350725080 100644 --- a/funcs/func_periodic_hook.c +++ b/funcs/func_periodic_hook.c @@ -486,11 +486,6 @@ static int load_module(void) res = ast_custom_function_register_escalating(&hook_function, AST_CFE_BOTH); - if (!res) { - /* For Optional API. */ - ast_module_shutdown_ref(AST_MODULE_SELF); - } - return res ? AST_MODULE_LOAD_DECLINE : AST_MODULE_LOAD_SUCCESS; } diff --git a/include/asterisk/agi.h b/include/asterisk/agi.h index cb80f95704ffd95f1d12318fb25539acb414a96e..568cd5d11626441875167aa8450ada5b9758c183 100644 --- a/include/asterisk/agi.h +++ b/include/asterisk/agi.h @@ -82,13 +82,12 @@ AST_OPTIONAL_API(int, ast_agi_register, * * Unregisters an AGI command. * - * \param mod Pointer to the module_info structure for the module that is unregistering the command * \param cmd Pointer to the descriptor for the command * \return 1 on success, 0 if the command was not already registered * */ AST_OPTIONAL_API(int, ast_agi_unregister, - (struct ast_module *mod, agi_command *cmd), + (agi_command *cmd), { return AST_OPTIONAL_API_UNAVAILABLE; }); /*! @@ -116,7 +115,6 @@ AST_OPTIONAL_API(int, ast_agi_register_multiple, * Unregisters a group of AGI commands, provided as an array of struct agi_command * entries. * - * \param mod Pointer to the module_info structure for the module that is unregistering the commands * \param cmd Pointer to the first entry in the array of command descriptors * \param len Length of the array (use the ARRAY_LEN macro to determine this easily) * \return 0 on success, -1 on failure, AST_OPTIONAL_API_UNAVAILABLE if res_agi is not loaded @@ -125,7 +123,7 @@ AST_OPTIONAL_API(int, ast_agi_register_multiple, * remaining commands in the array; it will not reregister the already-unregistered commands. */ AST_OPTIONAL_API(int, ast_agi_unregister_multiple, - (struct ast_module *mod, struct agi_command *cmd, unsigned int len), + (struct agi_command *cmd, unsigned int len), { return AST_OPTIONAL_API_UNAVAILABLE; }); /*! diff --git a/include/asterisk/ari.h b/include/asterisk/ari.h index f83d5963f322419200f33154dc0cc4bd6982fb19..865b4b00cc5d794dd3c49edd42ad4f52230fca0f 100644 --- a/include/asterisk/ari.h +++ b/include/asterisk/ari.h @@ -268,14 +268,4 @@ void ast_ari_response_created(struct ast_ari_response *response, */ void ast_ari_response_alloc_failed(struct ast_ari_response *response); -/*! \brief Determines whether the res_ari module is loaded */ -#define CHECK_ARI_MODULE_LOADED() \ - do { \ - if (!ast_module_check("res_ari.so") \ - || !ast_ari_oom_json()) { \ - return AST_MODULE_LOAD_DECLINE; \ - } \ - } while(0) - - #endif /* _ASTERISK_ARI_H */ diff --git a/include/asterisk/res_mwi_external.h b/include/asterisk/res_mwi_external.h index 7698a1bd69d91caa3fa896758787651d039f392c..25de70003afb840e52797746e5e77517b8123563 100644 --- a/include/asterisk/res_mwi_external.h +++ b/include/asterisk/res_mwi_external.h @@ -36,22 +36,6 @@ extern "C" /* ------------------------------------------------------------------- */ -/*! - * \brief Increase the external MWI resource module reference count. - * \since 12.1.0 - * - * \return Nothing - */ -void ast_mwi_external_ref(void); - -/*! - * \brief Decrease the external MWI resource module reference count. - * \since 12.1.0 - * - * \return Nothing - */ -void ast_mwi_external_unref(void); - struct ast_mwi_mailbox_object; /*! \brief Convienience unref function for mailbox object. */ diff --git a/include/asterisk/res_pjproject.h b/include/asterisk/res_pjproject.h index 8828b340c827784809f84fc511a05666104bd308..4993be610a0466982110fa9e4e0ed6a31ee6906f 100644 --- a/include/asterisk/res_pjproject.h +++ b/include/asterisk/res_pjproject.h @@ -19,14 +19,6 @@ #ifndef _RES_PJPROJECT_H #define _RES_PJPROJECT_H -/*! \brief Determines whether the res_pjproject module is loaded */ -#define CHECK_PJPROJECT_MODULE_LOADED() \ - do { \ - if (!ast_module_check("res_pjproject.so")) { \ - return AST_MODULE_LOAD_DECLINE; \ - } \ - } while(0) - /*! * \brief Retrieve a pjproject build option * @@ -79,18 +71,4 @@ void ast_pjproject_log_intercept_begin(int fd); */ void ast_pjproject_log_intercept_end(void); -/*! - * \brief Increment the res_pjproject reference count. - * - * This ensures graceful shutdown happens in the proper order. - */ -void ast_pjproject_ref(void); - -/*! - * \brief Decrement the res_pjproject reference count. - * - * This ensures graceful shutdown happens in the proper order. - */ -void ast_pjproject_unref(void); - #endif /* _RES_PJPROJECT_H */ diff --git a/include/asterisk/res_pjsip.h b/include/asterisk/res_pjsip.h index 66b99b8f7947f86c432fe2b64650f402016372dd..a3bd782224c665819ad996298e5e69130de4389f 100644 --- a/include/asterisk/res_pjsip.h +++ b/include/asterisk/res_pjsip.h @@ -933,9 +933,7 @@ enum ast_sip_contact_filter { * \retval 0 Success * \retval -1 Failure */ -#define ast_sip_register_service(module) \ - __ast_sip_register_service(module, __FILE__, __LINE__, __PRETTY_FUNCTION__) -int __ast_sip_register_service(pjsip_module *module, const char *file, int line, const char *func); +int ast_sip_register_service(pjsip_module *module); /*! * This is the opposite of ast_sip_register_service(). Unregistering a @@ -944,9 +942,7 @@ int __ast_sip_register_service(pjsip_module *module, const char *file, int line, * * \param module The PJSIP module to unregister */ -#define ast_sip_unregister_service(module) \ - __ast_sip_unregister_service(module, __FILE__, __LINE__, __PRETTY_FUNCTION__) -void __ast_sip_unregister_service(pjsip_module *module, const char *file, int line, const char *func); +void ast_sip_unregister_service(pjsip_module *module); /*! * \brief Register a SIP authenticator @@ -2448,10 +2444,8 @@ struct ast_sip_endpoint_formatter { * \brief Register an endpoint formatter. * * \param obj the formatter to register - * \retval 0 Success - * \retval -1 Failure */ -int ast_sip_register_endpoint_formatter(struct ast_sip_endpoint_formatter *obj); +void ast_sip_register_endpoint_formatter(struct ast_sip_endpoint_formatter *obj); /*! * \brief Unregister an endpoint formatter. @@ -2627,20 +2621,14 @@ struct ast_sip_supplement { * \retval 0 Success * \retval -1 Failure */ -#define ast_sip_register_supplement(supplement) \ - __ast_sip_register_supplement(supplement, __FILE__, __LINE__, __PRETTY_FUNCTION__) -int __ast_sip_register_supplement(struct ast_sip_supplement *supplement, - const char *file, int line, const char *func); +void ast_sip_register_supplement(struct ast_sip_supplement *supplement); /*! * \brief Unregister a an supplement to SIP out of dialog processing * * \param supplement The supplement to unregister */ -#define ast_sip_unregister_supplement(supplement) \ - __ast_sip_unregister_supplement(supplement, __FILE__, __LINE__, __PRETTY_FUNCTION__) -void __ast_sip_unregister_supplement(struct ast_sip_supplement *supplement, - const char *file, int line, const char *func); +void ast_sip_unregister_supplement(struct ast_sip_supplement *supplement); /*! * \brief Retrieve the global MWI taskprocessor high water alert trigger level. @@ -2764,15 +2752,6 @@ void ast_sip_get_default_realm(char *realm, size_t size); */ void ast_sip_get_default_from_user(char *from_user, size_t size); -/*! \brief Determines whether the res_pjsip module is loaded */ -#define CHECK_PJSIP_MODULE_LOADED() \ - do { \ - if (!ast_module_check("res_pjsip.so") \ - || !ast_sip_get_pjsip_endpoint()) { \ - return AST_MODULE_LOAD_DECLINE; \ - } \ - } while(0) - /*! * \brief Retrieve the system keep alive interval setting. * diff --git a/include/asterisk/res_pjsip_pubsub.h b/include/asterisk/res_pjsip_pubsub.h index cb51db31ffe16c45d07e629ab899b76d3844fb42..e9d59a0851ae571dacd174563ec24bdcfdf763a0 100644 --- a/include/asterisk/res_pjsip_pubsub.h +++ b/include/asterisk/res_pjsip_pubsub.h @@ -754,13 +754,4 @@ const char *ast_sip_subscription_get_body_subtype(struct ast_sip_subscription *s */ void ast_sip_subscription_destroy(struct ast_sip_subscription *sub); -/*! \brief Determines whether the res_pjsip_pubsub module is loaded */ -#define CHECK_PJSIP_PUBSUB_MODULE_LOADED() \ - do { \ - CHECK_PJSIP_MODULE_LOADED(); \ - if (!ast_module_check("res_pjsip_pubsub.so")) { \ - return AST_MODULE_LOAD_DECLINE; \ - } \ - } while(0) - #endif /* RES_PJSIP_PUBSUB_H */ diff --git a/include/asterisk/res_pjsip_session.h b/include/asterisk/res_pjsip_session.h index 65d463821297aa9fff475cdbd7501294d168bd39..f6ee0f00b477f5ff0614b336dc6fc47cfc89c9e4 100644 --- a/include/asterisk/res_pjsip_session.h +++ b/include/asterisk/res_pjsip_session.h @@ -579,23 +579,15 @@ void ast_sip_session_unregister_sdp_handler(struct ast_sip_session_sdp_handler * * a module could reject an incoming request if desired. * * \param supplement The supplement to register - * \retval 0 Success - * \retval -1 Failure */ -#define ast_sip_session_register_supplement(supplement) \ - __ast_sip_session_register_supplement(supplement, __FILE__, __LINE__, __PRETTY_FUNCTION__) -int __ast_sip_session_register_supplement(struct ast_sip_session_supplement *supplement, - const char *file, int line, const char *func); +void ast_sip_session_register_supplement(struct ast_sip_session_supplement *supplement); /*! * \brief Unregister a an supplement to SIP session processing * * \param supplement The supplement to unregister */ -#define ast_sip_session_unregister_supplement(supplement) \ - __ast_sip_session_unregister_supplement(supplement, __FILE__, __LINE__, __PRETTY_FUNCTION__) -void __ast_sip_session_unregister_supplement(struct ast_sip_session_supplement *supplement, - const char *file, int line, const char *func); +void ast_sip_session_unregister_supplement(struct ast_sip_session_supplement *supplement); /*! * \brief Add supplements to a SIP session @@ -894,13 +886,4 @@ int ast_sip_session_media_set_write_callback(struct ast_sip_session *session, st */ struct ast_sip_session_media *ast_sip_session_media_get_transport(struct ast_sip_session *session, struct ast_sip_session_media *session_media); -/*! \brief Determines whether the res_pjsip_session module is loaded */ -#define CHECK_PJSIP_SESSION_MODULE_LOADED() \ - do { \ - CHECK_PJSIP_MODULE_LOADED(); \ - if (!ast_module_check("res_pjsip_session.so")) { \ - return AST_MODULE_LOAD_DECLINE; \ - } \ - } while(0) - #endif /* _RES_PJSIP_SESSION_H */ diff --git a/include/asterisk/stasis_app.h b/include/asterisk/stasis_app.h index 8ef2bda1cdb7a40aabe2855df2c64f0deb015c0d..b0829ab7363266155e869e878f3f0eb6fbbad20e 100644 --- a/include/asterisk/stasis_app.h +++ b/include/asterisk/stasis_app.h @@ -46,8 +46,8 @@ * functions. * * Since module unload order is based on reference counting, any module that - * uses the API defined in this file must call stasis_app_ref() when loaded, - * and stasis_app_unref() when unloaded. + * uses the API defined in this file must list "res_stasis" in the requires + * field. */ #include "asterisk/channel.h" @@ -228,18 +228,6 @@ void stasis_app_register_event_source(struct stasis_app_event_source *obj); */ void stasis_app_register_event_sources(void); -/*! - * \brief Checks to see if the given object is a core event source - * - * \note core event sources are currently only endpoint, bridge, and channel. - * - * \param obj event source object to check - * - * \return non-zero if core event source, otherwise 0 (false) - - */ -int stasis_app_is_core_event_source(struct stasis_app_event_source *obj); - /*! * \brief Unregister an application event source. * @@ -849,20 +837,6 @@ struct ast_bridge *stasis_app_get_bridge(struct stasis_app_control *control); */ void stasis_app_bridge_destroy(const char *bridge_id); -/*! - * \brief Increment the res_stasis reference count. - * - * This ensures graceful shutdown happens in the proper order. - */ -void stasis_app_ref(void); - -/*! - * \brief Decrement the res_stasis reference count. - * - * This ensures graceful shutdown happens in the proper order. - */ -void stasis_app_unref(void); - /*! * \brief Get the Stasis message sanitizer for app_stasis applications * diff --git a/res/res_agi.c b/res/res_agi.c index 2d0dc274396b322b5229452087c8d614857482c4..0931c1a0727a760e050715680120c610ed7ec58d 100644 --- a/res/res_agi.c +++ b/res/res_agi.c @@ -3815,8 +3815,6 @@ int AST_OPTIONAL_API_NAME(ast_agi_register)(struct ast_module *mod, agi_command AST_RWLIST_WRLOCK(&agi_commands); AST_LIST_INSERT_TAIL(&agi_commands, cmd, list); AST_RWLIST_UNLOCK(&agi_commands); - if (mod != ast_module_info->self) - ast_module_ref(ast_module_info->self); ast_verb(2, "AGI Command '%s' registered\n",fullcmd); return 1; } else { @@ -3825,7 +3823,7 @@ int AST_OPTIONAL_API_NAME(ast_agi_register)(struct ast_module *mod, agi_command } } -int AST_OPTIONAL_API_NAME(ast_agi_unregister)(struct ast_module *mod, agi_command *cmd) +int AST_OPTIONAL_API_NAME(ast_agi_unregister)(agi_command *cmd) { struct agi_command *e; int unregistered = 0; @@ -3837,8 +3835,6 @@ int AST_OPTIONAL_API_NAME(ast_agi_unregister)(struct ast_module *mod, agi_comman AST_RWLIST_TRAVERSE_SAFE_BEGIN(&agi_commands, e, list) { if (cmd == e) { AST_RWLIST_REMOVE_CURRENT(list); - if (mod != ast_module_info->self) - ast_module_unref(ast_module_info->self); #ifdef AST_XML_DOCS if (e->docsrc == AST_XML_DOC) { ast_free((char *) e->summary); @@ -3885,7 +3881,7 @@ int AST_OPTIONAL_API_NAME(ast_agi_register_multiple)(struct ast_module *mod, str to fail is if the command is not registered */ - (void) ast_agi_unregister(mod, cmd + x - 1); + (void) ast_agi_unregister(cmd + x - 1); } return -1; } @@ -3893,7 +3889,7 @@ int AST_OPTIONAL_API_NAME(ast_agi_register_multiple)(struct ast_module *mod, str return 0; } -int AST_OPTIONAL_API_NAME(ast_agi_unregister_multiple)(struct ast_module *mod, struct agi_command *cmd, unsigned int len) +int AST_OPTIONAL_API_NAME(ast_agi_unregister_multiple)(struct agi_command *cmd, unsigned int len) { unsigned int i; int res = 0; @@ -3903,7 +3899,7 @@ int AST_OPTIONAL_API_NAME(ast_agi_unregister_multiple)(struct ast_module *mod, s attempts failed... there is no recourse if any of them do */ - res |= ast_agi_unregister(mod, cmd + i); + res |= ast_agi_unregister(cmd + i); } return res; @@ -4659,7 +4655,7 @@ AST_TEST_DEFINE(test_agi_null_docs) } #endif - ast_agi_unregister(ast_module_info->self, &noop_command); + ast_agi_unregister(&noop_command); return res; } #endif @@ -4673,7 +4669,7 @@ static int unload_module(void) STASIS_MESSAGE_TYPE_CLEANUP(agi_async_end_type); ast_cli_unregister_multiple(cli_agi, ARRAY_LEN(cli_agi)); - ast_agi_unregister_multiple(ast_module_info->self, commands, ARRAY_LEN(commands)); + ast_agi_unregister_multiple(commands, ARRAY_LEN(commands)); ast_unregister_application(eapp); ast_unregister_application(deadapp); ast_manager_unregister("AGI"); @@ -4706,9 +4702,6 @@ static int load_module(void) return AST_MODULE_LOAD_DECLINE; } - /* For Optional API. */ - ast_module_shutdown_ref(AST_MODULE_SELF); - return AST_MODULE_LOAD_SUCCESS; } diff --git a/res/res_ari.c b/res/res_ari.c index 6ce25a5820b33541f7bbae62547dae1be69a92e1..5ffb5833f101d736d0a89ca59f5f64f87c361274 100644 --- a/res/res_ari.c +++ b/res/res_ari.c @@ -196,7 +196,6 @@ int ast_ari_add_handler(struct stasis_rest_handlers *handler) ao2_cleanup(root_handler); ao2_ref(new_handler, +1); root_handler = new_handler; - ast_module_ref(ast_module_info->self); return 0; } @@ -222,7 +221,6 @@ int ast_ari_remove_handler(struct stasis_rest_handlers *handler) memcpy(new_handler, root_handler, sizeof(*new_handler)); for (i = 0, j = 0; i < root_handler->num_children; ++i) { if (root_handler->children[i] == handler) { - ast_module_unref(ast_module_info->self); continue; } new_handler->children[j++] = root_handler->children[i]; diff --git a/res/res_ari_applications.c b/res/res_ari_applications.c index 323bdb39a2db9d80a273eb22c8d0890a9d0c5c9c..fd8a448cef66e91cad39a2f23ddf05c76db02e0a 100644 --- a/res/res_ari_applications.c +++ b/res/res_ari_applications.c @@ -493,7 +493,6 @@ static struct stasis_rest_handlers applications = { static int unload_module(void) { ast_ari_remove_handler(&applications); - stasis_app_unref(); return 0; } @@ -501,10 +500,7 @@ static int load_module(void) { int res = 0; - CHECK_ARI_MODULE_LOADED(); - - stasis_app_ref(); res |= ast_ari_add_handler(&applications); if (res) { unload_module(); diff --git a/res/res_ari_asterisk.c b/res/res_ari_asterisk.c index 9f76f939bdec55725b3591d8066ed54c5f906fcd..e143a7f6ad9eee425078e4d0083a50a886959d08 100644 --- a/res/res_ari_asterisk.c +++ b/res/res_ari_asterisk.c @@ -1214,7 +1214,6 @@ static struct stasis_rest_handlers asterisk = { static int unload_module(void) { ast_ari_remove_handler(&asterisk); - stasis_app_unref(); return 0; } @@ -1222,10 +1221,7 @@ static int load_module(void) { int res = 0; - CHECK_ARI_MODULE_LOADED(); - - stasis_app_ref(); res |= ast_ari_add_handler(&asterisk); if (res) { unload_module(); diff --git a/res/res_ari_bridges.c b/res/res_ari_bridges.c index 93cf7c49bf4aa5bc605f1340f0b68d4b13e53b6f..7ef0f684a5b4296010ff936f059d1738f21a6f04 100644 --- a/res/res_ari_bridges.c +++ b/res/res_ari_bridges.c @@ -1556,7 +1556,6 @@ static struct stasis_rest_handlers bridges = { static int unload_module(void) { ast_ari_remove_handler(&bridges); - stasis_app_unref(); return 0; } @@ -1564,10 +1563,7 @@ static int load_module(void) { int res = 0; - CHECK_ARI_MODULE_LOADED(); - - stasis_app_ref(); res |= ast_ari_add_handler(&bridges); if (res) { unload_module(); diff --git a/res/res_ari_channels.c b/res/res_ari_channels.c index 7ca7e2e4d356fd7f4efbc908652f239ac80433dd..dae146c43c0a93a1345d04f635960596fb6ea62e 100644 --- a/res/res_ari_channels.c +++ b/res/res_ari_channels.c @@ -2848,7 +2848,6 @@ static struct stasis_rest_handlers channels = { static int unload_module(void) { ast_ari_remove_handler(&channels); - stasis_app_unref(); return 0; } @@ -2856,10 +2855,7 @@ static int load_module(void) { int res = 0; - CHECK_ARI_MODULE_LOADED(); - - stasis_app_ref(); res |= ast_ari_add_handler(&channels); if (res) { unload_module(); diff --git a/res/res_ari_device_states.c b/res/res_ari_device_states.c index 04479e6ace14f2ade82dfc1338bda830cf8d7141..12962b68a65021e0cb697c1797b4bb74a8868e91 100644 --- a/res/res_ari_device_states.c +++ b/res/res_ari_device_states.c @@ -325,7 +325,6 @@ static struct stasis_rest_handlers deviceStates = { static int unload_module(void) { ast_ari_remove_handler(&deviceStates); - stasis_app_unref(); return 0; } @@ -333,10 +332,7 @@ static int load_module(void) { int res = 0; - CHECK_ARI_MODULE_LOADED(); - - stasis_app_ref(); res |= ast_ari_add_handler(&deviceStates); if (res) { unload_module(); diff --git a/res/res_ari_endpoints.c b/res/res_ari_endpoints.c index 07197ca97c17bd6df566f9f06b06f9edb9a0b771..947da71e2c194646f3a6614f6c5362c576a53ea1 100644 --- a/res/res_ari_endpoints.c +++ b/res/res_ari_endpoints.c @@ -448,7 +448,6 @@ static struct stasis_rest_handlers endpoints = { static int unload_module(void) { ast_ari_remove_handler(&endpoints); - stasis_app_unref(); return 0; } @@ -456,10 +455,7 @@ static int load_module(void) { int res = 0; - CHECK_ARI_MODULE_LOADED(); - - stasis_app_ref(); res |= ast_ari_add_handler(&endpoints); if (res) { unload_module(); diff --git a/res/res_ari_events.c b/res/res_ari_events.c index 06eb77a3806f9d75bbfea1a3ebc016313bba9cf8..c8f28f97b1214fa3b18be0576632b79c53c21a7d 100644 --- a/res/res_ari_events.c +++ b/res/res_ari_events.c @@ -424,7 +424,6 @@ static int unload_module(void) ao2_cleanup(events.ws_server); events.ws_server = NULL; ast_ari_websocket_events_event_websocket_dtor(); - stasis_app_unref(); return 0; } @@ -432,35 +431,29 @@ static int load_module(void) { int res = 0; - CHECK_ARI_MODULE_LOADED(); + struct ast_websocket_protocol *protocol; - /* This is scoped to not conflict with CHECK_ARI_MODULE_LOADED */ - { - struct ast_websocket_protocol *protocol; - - if (ast_ari_websocket_events_event_websocket_init() == -1) { - return AST_MODULE_LOAD_DECLINE; - } + if (ast_ari_websocket_events_event_websocket_init() == -1) { + return AST_MODULE_LOAD_DECLINE; + } - events.ws_server = ast_websocket_server_create(); - if (!events.ws_server) { - ast_ari_websocket_events_event_websocket_dtor(); - return AST_MODULE_LOAD_DECLINE; - } + events.ws_server = ast_websocket_server_create(); + if (!events.ws_server) { + ast_ari_websocket_events_event_websocket_dtor(); + return AST_MODULE_LOAD_DECLINE; + } - protocol = ast_websocket_sub_protocol_alloc("ari"); - if (!protocol) { - ao2_ref(events.ws_server, -1); - events.ws_server = NULL; - ast_ari_websocket_events_event_websocket_dtor(); - return AST_MODULE_LOAD_DECLINE; - } - protocol->session_attempted = ast_ari_events_event_websocket_ws_attempted_cb; - protocol->session_established = ast_ari_events_event_websocket_ws_established_cb; - res |= ast_websocket_server_add_protocol2(events.ws_server, protocol); + protocol = ast_websocket_sub_protocol_alloc("ari"); + if (!protocol) { + ao2_ref(events.ws_server, -1); + events.ws_server = NULL; + ast_ari_websocket_events_event_websocket_dtor(); + return AST_MODULE_LOAD_DECLINE; } + protocol->session_attempted = ast_ari_events_event_websocket_ws_attempted_cb; + protocol->session_established = ast_ari_events_event_websocket_ws_established_cb; + res |= ast_websocket_server_add_protocol2(events.ws_server, protocol); - stasis_app_ref(); res |= ast_ari_add_handler(&events); if (res) { unload_module(); diff --git a/res/res_ari_mailboxes.c b/res/res_ari_mailboxes.c index 123664e46e73aedc82e7577ee79a3b95a57cfda3..e25a7bc3db20fabc9bbdee52fc45a9d274eca09a 100644 --- a/res/res_ari_mailboxes.c +++ b/res/res_ari_mailboxes.c @@ -331,7 +331,6 @@ static struct stasis_rest_handlers mailboxes = { static int unload_module(void) { ast_ari_remove_handler(&mailboxes); - stasis_app_unref(); return 0; } @@ -339,10 +338,7 @@ static int load_module(void) { int res = 0; - CHECK_ARI_MODULE_LOADED(); - - stasis_app_ref(); res |= ast_ari_add_handler(&mailboxes); if (res) { unload_module(); diff --git a/res/res_ari_playbacks.c b/res/res_ari_playbacks.c index 547b39e391b48196fa8acf0a437455ee23e557af..5fbfcf16547b4726f25be32296af49ce5ca84d05 100644 --- a/res/res_ari_playbacks.c +++ b/res/res_ari_playbacks.c @@ -283,7 +283,6 @@ static struct stasis_rest_handlers playbacks = { static int unload_module(void) { ast_ari_remove_handler(&playbacks); - stasis_app_unref(); return 0; } @@ -291,10 +290,7 @@ static int load_module(void) { int res = 0; - CHECK_ARI_MODULE_LOADED(); - - stasis_app_ref(); res |= ast_ari_add_handler(&playbacks); if (res) { unload_module(); diff --git a/res/res_ari_recordings.c b/res/res_ari_recordings.c index 45c789c2d496c2c7caf53e6c1ba347d31eeef0fd..6487f3e15ad4131219873795719b0ae0b7a9dc33 100644 --- a/res/res_ari_recordings.c +++ b/res/res_ari_recordings.c @@ -867,7 +867,6 @@ static struct stasis_rest_handlers recordings = { static int unload_module(void) { ast_ari_remove_handler(&recordings); - stasis_app_unref(); return 0; } @@ -875,10 +874,7 @@ static int load_module(void) { int res = 0; - CHECK_ARI_MODULE_LOADED(); - - stasis_app_ref(); res |= ast_ari_add_handler(&recordings); if (res) { unload_module(); diff --git a/res/res_ari_sounds.c b/res/res_ari_sounds.c index 5c27ebd92297b0471d0f2b126006bf6463f9c5fb..b9c9bdfac30e4a227cb9eb30e63276fa858ed8e3 100644 --- a/res/res_ari_sounds.c +++ b/res/res_ari_sounds.c @@ -212,7 +212,6 @@ static struct stasis_rest_handlers sounds = { static int unload_module(void) { ast_ari_remove_handler(&sounds); - stasis_app_unref(); return 0; } @@ -220,10 +219,7 @@ static int load_module(void) { int res = 0; - CHECK_ARI_MODULE_LOADED(); - - stasis_app_ref(); res |= ast_ari_add_handler(&sounds); if (res) { unload_module(); diff --git a/res/res_config_curl.c b/res/res_config_curl.c index 213209720d933866820bc9aaf7a47701ddff4e9f..03f0338ccafc7d0a85296362f8c2cac11078146a 100644 --- a/res/res_config_curl.c +++ b/res/res_config_curl.c @@ -637,20 +637,6 @@ static int unload_module(void) static int load_module(void) { - if (!ast_module_check("res_curl.so")) { - if (ast_load_resource("res_curl.so") != AST_MODULE_LOAD_SUCCESS) { - ast_log(LOG_ERROR, "Cannot load res_curl, so res_config_curl cannot be loaded\n"); - return AST_MODULE_LOAD_DECLINE; - } - } - - if (!ast_module_check("func_curl.so")) { - if (ast_load_resource("func_curl.so") != AST_MODULE_LOAD_SUCCESS) { - ast_log(LOG_ERROR, "Cannot load func_curl, so res_config_curl cannot be loaded\n"); - return AST_MODULE_LOAD_DECLINE; - } - } - reload_module(); ast_config_engine_register(&curl_engine); @@ -664,4 +650,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Realtime Curl configu .unload = unload_module, .reload = reload_module, .load_pri = AST_MODPRI_REALTIME_DRIVER, + .requires = "res_curl,func_curl", ); diff --git a/res/res_crypto.c b/res/res_crypto.c index 8f97ce9f8baf175f679836d53ebf6dc7eeb0ddc4..4f8f2cb6e2148eb50975594d2eec253935c8a69d 100644 --- a/res/res_crypto.c +++ b/res/res_crypto.c @@ -651,8 +651,6 @@ static int load_module(void) crypto_load(-1, -1); } - /* This prevents dlclose from ever running, but allows CLI cleanup at shutdown. */ - ast_module_shutdown_ref(ast_module_info->self); return AST_MODULE_LOAD_SUCCESS; } @@ -663,7 +661,6 @@ static int unload_module(void) return 0; } -/* needs usecount semantics defined */ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER, "Cryptographic Digital Signatures", .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, diff --git a/res/res_curl.c b/res/res_curl.c index e0f753cc3ff4eda4330265fe0e7c3f5ae2e993cd..3dc7c2f03f603e77c178725a564d8db43c6173bc 100644 --- a/res/res_curl.c +++ b/res/res_curl.c @@ -46,33 +46,11 @@ #include "asterisk/module.h" -static const char *dependents[] = { - "func_curl.so", - "res_config_curl.so", - "res_http_media_cache.so", -}; - static int unload_module(void) { - int res = 0; - size_t i; - - /* If the dependent modules are still in memory, forbid unload */ - for (i = 0; i < ARRAY_LEN(dependents); i++) { - if (ast_module_check(dependents[i])) { - if (!ast_shutting_down()) { - ast_log(LOG_WARNING, "%s (dependent module) is still loaded. Cannot unload res_curl.so\n", dependents[i]); - } - res = -1; - } - } - - if (res) - return -1; - curl_global_cleanup(); - return res; + return 0; } static int load_module(void) diff --git a/res/res_fax.c b/res/res_fax.c index 4be5aee75a3c82e5cef46c78ae362ddee1b439a5..315f0003b8ebae58f3fb5ecc541ffea673e424cf 100644 --- a/res/res_fax.c +++ b/res/res_fax.c @@ -978,7 +978,6 @@ int ast_fax_tech_register(struct ast_fax_tech *tech) AST_RWLIST_WRLOCK(&faxmodules); AST_RWLIST_INSERT_TAIL(&faxmodules, fax, list); AST_RWLIST_UNLOCK(&faxmodules); - ast_module_ref(ast_module_info->self); ast_verb(3, "Registered handler for '%s' (%s)\n", fax->tech->type, fax->tech->description); @@ -998,7 +997,6 @@ void ast_fax_tech_unregister(struct ast_fax_tech *tech) continue; } AST_RWLIST_REMOVE_CURRENT(list); - ast_module_unref(ast_module_info->self); ast_free(fax); ast_verb(4, "Unregistered FAX module type '%s'\n", tech->type); break; diff --git a/res/res_hep_pjsip.c b/res/res_hep_pjsip.c index ff0267501e7003c3d7cfb4f83c8762f909a6cdc0..be2f6eab0c7ea7a8007f51cede387b2746a22c6a 100644 --- a/res/res_hep_pjsip.c +++ b/res/res_hep_pjsip.c @@ -232,10 +232,8 @@ static pjsip_module logging_module = { static int load_module(void) { - CHECK_PJSIP_MODULE_LOADED(); - - if (!ast_module_check("res_hep.so") || !hepv3_is_loaded()) { - ast_log(AST_LOG_WARNING, "res_hep is not loaded or running; declining module load\n"); + if (!hepv3_is_loaded()) { + ast_log(AST_LOG_WARNING, "res_hep is disabled; declining module load\n"); return AST_MODULE_LOAD_DECLINE; } diff --git a/res/res_hep_rtcp.c b/res/res_hep_rtcp.c index 199c8164dadc5cf5689def20ec54665c4af1471d..c3abbc164b96213e9832f3471b402988d1422d07 100644 --- a/res/res_hep_rtcp.c +++ b/res/res_hep_rtcp.c @@ -157,8 +157,8 @@ static void rtp_topic_handler(void *data, struct stasis_subscription *sub, struc static int load_module(void) { - if (!ast_module_check("res_hep.so") || !hepv3_is_loaded()) { - ast_log(AST_LOG_WARNING, "res_hep is not loaded or running; declining module load\n"); + if (!hepv3_is_loaded()) { + ast_log(AST_LOG_WARNING, "res_hep is disabled; declining module load\n"); return AST_MODULE_LOAD_DECLINE; } diff --git a/res/res_http_media_cache.c b/res/res_http_media_cache.c index 918686e8aea96bcf757f945ddc62d7da7c0192c2..eba7ecc618299899360a3a10d9fe004a1c294ace 100644 --- a/res/res_http_media_cache.c +++ b/res/res_http_media_cache.c @@ -441,4 +441,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "HTTP Media Cache Backend .support_level = AST_MODULE_SUPPORT_CORE, .load = load_module, .unload = unload_module, + .requires = "res_curl", ); diff --git a/res/res_http_websocket.c b/res/res_http_websocket.c index 86a15478743bc0d821daf468a973c242a15540ee..bcad1c39c774df0cbe3ed26035f0f682f4e02d64 100644 --- a/res/res_http_websocket.c +++ b/res/res_http_websocket.c @@ -131,24 +131,18 @@ struct ast_websocket_server { struct ao2_container *protocols; /*!< Container for registered protocols */ }; -static void websocket_server_internal_dtor(void *obj) +static void websocket_server_dtor(void *obj) { struct ast_websocket_server *server = obj; ao2_cleanup(server->protocols); server->protocols = NULL; } -static void websocket_server_dtor(void *obj) -{ - websocket_server_internal_dtor(obj); - ast_module_unref(ast_module_info->self); -} - -static struct ast_websocket_server *websocket_server_create_impl(void (*dtor)(void *)) +static struct ast_websocket_server *websocket_server_create_impl(void) { RAII_VAR(struct ast_websocket_server *, server, NULL, ao2_cleanup); - server = ao2_alloc(sizeof(*server), dtor); + server = ao2_alloc(sizeof(*server), websocket_server_dtor); if (!server) { return NULL; } @@ -164,13 +158,12 @@ static struct ast_websocket_server *websocket_server_create_impl(void (*dtor)(vo static struct ast_websocket_server *websocket_server_internal_create(void) { - return websocket_server_create_impl(websocket_server_internal_dtor); + return websocket_server_create_impl(); } struct ast_websocket_server *AST_OPTIONAL_API_NAME(ast_websocket_server_create)(void) { - ast_module_ref(ast_module_info->self); - return websocket_server_create_impl(websocket_server_dtor); + return websocket_server_create_impl(); } /*! \brief Destructor function for sessions */ @@ -997,11 +990,7 @@ static int websocket_add_protocol_internal(const char *name, ast_websocket_callb int AST_OPTIONAL_API_NAME(ast_websocket_add_protocol)(const char *name, ast_websocket_callback callback) { - int res = websocket_add_protocol_internal(name, callback); - if (res == 0) { - ast_module_ref(ast_module_info->self); - } - return res; + return websocket_add_protocol_internal(name, callback); } int AST_OPTIONAL_API_NAME(ast_websocket_add_protocol2)(struct ast_websocket_protocol *protocol) @@ -1016,7 +1005,6 @@ int AST_OPTIONAL_API_NAME(ast_websocket_add_protocol2)(struct ast_websocket_prot return -1; } - ast_module_ref(ast_module_info->self); return 0; } @@ -1031,11 +1019,7 @@ static int websocket_remove_protocol_internal(const char *name, ast_websocket_ca int AST_OPTIONAL_API_NAME(ast_websocket_remove_protocol)(const char *name, ast_websocket_callback callback) { - int res = websocket_remove_protocol_internal(name, callback); - if (res == 0) { - ast_module_unref(ast_module_info->self); - } - return res; + return websocket_remove_protocol_internal(name, callback); } /*! \brief Parse the given uri into a path and remote address. @@ -1457,9 +1441,6 @@ static int load_module(void) ast_http_uri_link(&websocketuri); websocket_add_protocol_internal("echo", websocket_echo_callback); - /* For Optional API. */ - ast_module_shutdown_ref(AST_MODULE_SELF); - return 0; } diff --git a/res/res_monitor.c b/res/res_monitor.c index e2b5fb2521da97425e8c5eeb25a3731ee819f92e..a8631dcb7f19bd4746740aae287421f59227e1ca 100644 --- a/res/res_monitor.c +++ b/res/res_monitor.c @@ -985,9 +985,6 @@ static int load_module(void) ast_manager_register_xml("PauseMonitor", EVENT_FLAG_CALL, pause_monitor_action); ast_manager_register_xml("UnpauseMonitor", EVENT_FLAG_CALL, unpause_monitor_action); - /* For Optional API. */ - ast_module_shutdown_ref(AST_MODULE_SELF); - return AST_MODULE_LOAD_SUCCESS; } diff --git a/res/res_mwi_external.c b/res/res_mwi_external.c index d797991968ea5cdaad0875798944d9e1aa7c07d4..82c74b990f9eb96e502ea4201454110797161a47 100644 --- a/res/res_mwi_external.c +++ b/res/res_mwi_external.c @@ -81,16 +81,6 @@ struct ast_mwi_mailbox_object { static struct ast_sorcery *mwi_sorcery; -void ast_mwi_external_ref(void) -{ - ast_module_ref(ast_module_info->self); -} - -void ast_mwi_external_unref(void) -{ - ast_module_unref(ast_module_info->self); -} - /*! * \internal * \brief Post an update event to the MWI counts. diff --git a/res/res_mwi_external_ami.c b/res/res_mwi_external_ami.c index 8639fad402c8e0603229a73f0479db51488fe538..e4d5054e2095834922946ab817ef8bede9a2d8ac 100644 --- a/res/res_mwi_external_ami.c +++ b/res/res_mwi_external_ami.c @@ -342,8 +342,6 @@ static int unload_module(void) ast_manager_unregister("MWIDelete"); ast_manager_unregister("MWIUpdate"); - /* Must be done last */ - ast_mwi_external_unref(); return 0; } @@ -351,9 +349,6 @@ static int load_module(void) { int res; - /* Must be done first */ - ast_mwi_external_ref(); - res = 0; res |= ast_manager_register_xml("MWIGet", EVENT_FLAG_CALL | EVENT_FLAG_REPORTING, mwi_mailbox_get); res |= ast_manager_register_xml("MWIDelete", EVENT_FLAG_CALL, mwi_mailbox_delete); diff --git a/res/res_pjproject.c b/res/res_pjproject.c index 6137898a310b4d48bda8117583b60e1269493a3a..f506a62fdcd8de6fa9c329d94d19f7aa6911b78b 100644 --- a/res/res_pjproject.c +++ b/res/res_pjproject.c @@ -280,16 +280,6 @@ void ast_pjproject_log_intercept_end(void) ast_mutex_unlock(&pjproject_log_intercept_lock); } -void ast_pjproject_ref(void) -{ - ast_module_ref(ast_module_info->self); -} - -void ast_pjproject_unref(void) -{ - ast_module_unref(ast_module_info->self); -} - static char *handle_pjproject_show_buildopts(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) { int i; diff --git a/res/res_pjsip.c b/res/res_pjsip.c index 0c7fd518906bb61cc2eef2045a635c90cf97303d..6a7d918c41968790f2d681ead36a6ef8caebb8d4 100644 --- a/res/res_pjsip.c +++ b/res/res_pjsip.c @@ -2716,7 +2716,7 @@ static pj_sockaddr host_ip_ipv6; /*! Local host address for IPv6 (string form) */ static char host_ip_ipv6_string[PJ_INET6_ADDRSTRLEN]; -static int register_service_noref(void *data) +static int register_service(void *data) { pjsip_module **module = data; if (!ast_pjsip_endpoint) { @@ -2731,23 +2731,12 @@ static int register_service_noref(void *data) return 0; } -int internal_sip_register_service(pjsip_module *module) +int ast_sip_register_service(pjsip_module *module) { - return ast_sip_push_task_synchronous(NULL, register_service_noref, &module); + return ast_sip_push_task_synchronous(NULL, register_service, &module); } -int __ast_sip_register_service(pjsip_module *module, const char *file, int line, const char *func) -{ - int res; - - if (!(res = ast_sip_push_task_synchronous(NULL, register_service_noref, &module))) { - __ast_module_ref(ast_module_info->self, file, line, func); - } - - return res; -} - -static int unregister_service_noref(void *data) +static int unregister_service(void *data) { pjsip_module **module = data; if (!ast_pjsip_endpoint) { @@ -2758,16 +2747,9 @@ static int unregister_service_noref(void *data) return 0; } -int internal_sip_unregister_service(pjsip_module *module) +void ast_sip_unregister_service(pjsip_module *module) { - return ast_sip_push_task_synchronous(NULL, unregister_service_noref, &module); -} - -void __ast_sip_unregister_service(pjsip_module *module, const char *file, int line, const char *func) -{ - if (!ast_sip_push_task_synchronous(NULL, unregister_service_noref, &module)) { - __ast_module_unref(ast_module_info->self, file, line, func); - } + ast_sip_push_task_synchronous(NULL, unregister_service, &module); } static struct ast_sip_authenticator *registered_authenticator; @@ -2780,7 +2762,7 @@ int ast_sip_register_authenticator(struct ast_sip_authenticator *auth) } registered_authenticator = auth; ast_debug(1, "Registered SIP authenticator module %p\n", auth); - ast_module_ref(ast_module_info->self); + return 0; } @@ -2793,7 +2775,6 @@ void ast_sip_unregister_authenticator(struct ast_sip_authenticator *auth) } registered_authenticator = NULL; ast_debug(1, "Unregistered SIP authenticator %p\n", auth); - ast_module_unref(ast_module_info->self); } int ast_sip_requires_authentication(struct ast_sip_endpoint *endpoint, pjsip_rx_data *rdata) @@ -2826,7 +2807,7 @@ int ast_sip_register_outbound_authenticator(struct ast_sip_outbound_authenticato } registered_outbound_authenticator = auth; ast_debug(1, "Registered SIP outbound authenticator module %p\n", auth); - ast_module_ref(ast_module_info->self); + return 0; } @@ -2839,7 +2820,6 @@ void ast_sip_unregister_outbound_authenticator(struct ast_sip_outbound_authentic } registered_outbound_authenticator = NULL; ast_debug(1, "Unregistered SIP outbound authenticator %p\n", auth); - ast_module_unref(ast_module_info->self); } int ast_sip_create_request_with_auth(const struct ast_sip_auth_vector *auths, pjsip_rx_data *challenge, @@ -2881,7 +2861,6 @@ int ast_sip_register_endpoint_identifier_with_name(struct ast_sip_endpoint_ident if (ast_strlen_zero(name)) { /* if an identifier has no name then place in front */ AST_RWLIST_INSERT_HEAD(&endpoint_identifiers, id_list_item, list); - ast_module_ref(ast_module_info->self); return 0; } @@ -2891,7 +2870,6 @@ int ast_sip_register_endpoint_identifier_with_name(struct ast_sip_endpoint_ident if (ast_strlen_zero(identifier_order)) { id_list_item->priority = UINT_MAX; AST_RWLIST_INSERT_TAIL(&endpoint_identifiers, id_list_item, list); - ast_module_ref(ast_module_info->self); ast_free(identifier_order); return 0; } @@ -2919,7 +2897,6 @@ int ast_sip_register_endpoint_identifier_with_name(struct ast_sip_endpoint_ident /* if not in the endpoint_identifier_order list then consider it less in priority and add it to the end */ AST_RWLIST_INSERT_TAIL(&endpoint_identifiers, id_list_item, list); - ast_module_ref(ast_module_info->self); ast_free(identifier_order); return 0; } @@ -2937,7 +2914,6 @@ int ast_sip_register_endpoint_identifier_with_name(struct ast_sip_endpoint_ident } AST_RWLIST_TRAVERSE_SAFE_END; - ast_module_ref(ast_module_info->self); ast_free(identifier_order); return 0; } @@ -2956,7 +2932,6 @@ void ast_sip_unregister_endpoint_identifier(struct ast_sip_endpoint_identifier * AST_RWLIST_REMOVE_CURRENT(list); ast_free(iter); ast_debug(1, "Unregistered endpoint identifier %p\n", identifier); - ast_module_unref(ast_module_info->self); break; } } @@ -3099,23 +3074,17 @@ static struct ast_cli_entry cli_commands[] = { AST_RWLIST_HEAD_STATIC(endpoint_formatters, ast_sip_endpoint_formatter); -void internal_sip_register_endpoint_formatter(struct ast_sip_endpoint_formatter *obj) +void ast_sip_register_endpoint_formatter(struct ast_sip_endpoint_formatter *obj) { SCOPED_LOCK(lock, &endpoint_formatters, AST_RWLIST_WRLOCK, AST_RWLIST_UNLOCK); AST_RWLIST_INSERT_TAIL(&endpoint_formatters, obj, next); } -int ast_sip_register_endpoint_formatter(struct ast_sip_endpoint_formatter *obj) -{ - internal_sip_register_endpoint_formatter(obj); - ast_module_ref(ast_module_info->self); - return 0; -} - -int internal_sip_unregister_endpoint_formatter(struct ast_sip_endpoint_formatter *obj) +void ast_sip_unregister_endpoint_formatter(struct ast_sip_endpoint_formatter *obj) { struct ast_sip_endpoint_formatter *i; SCOPED_LOCK(lock, &endpoint_formatters, AST_RWLIST_WRLOCK, AST_RWLIST_UNLOCK); + AST_RWLIST_TRAVERSE_SAFE_BEGIN(&endpoint_formatters, i, next) { if (i == obj) { AST_RWLIST_REMOVE_CURRENT(next); @@ -3123,14 +3092,6 @@ int internal_sip_unregister_endpoint_formatter(struct ast_sip_endpoint_formatter } } AST_RWLIST_TRAVERSE_SAFE_END; - return i == obj ? 0 : -1; -} - -void ast_sip_unregister_endpoint_formatter(struct ast_sip_endpoint_formatter *obj) -{ - if (!internal_sip_unregister_endpoint_formatter(obj)) { - ast_module_unref(ast_module_info->self); - } } int ast_sip_format_endpoint_ami(struct ast_sip_endpoint *endpoint, @@ -3817,7 +3778,7 @@ int ast_sip_create_request(const char *method, struct pjsip_dialog *dlg, AST_RWLIST_HEAD_STATIC(supplements, ast_sip_supplement); -void internal_sip_register_supplement(struct ast_sip_supplement *supplement) +void ast_sip_register_supplement(struct ast_sip_supplement *supplement) { struct ast_sip_supplement *iter; int inserted = 0; @@ -3837,39 +3798,18 @@ void internal_sip_register_supplement(struct ast_sip_supplement *supplement) } } -int __ast_sip_register_supplement(struct ast_sip_supplement *supplement, - const char *file, int line, const char *func) -{ - internal_sip_register_supplement(supplement); - __ast_module_ref(ast_module_info->self, file, line, func); - - return 0; -} - -int internal_sip_unregister_supplement(struct ast_sip_supplement *supplement) +void ast_sip_unregister_supplement(struct ast_sip_supplement *supplement) { struct ast_sip_supplement *iter; SCOPED_LOCK(lock, &supplements, AST_RWLIST_WRLOCK, AST_RWLIST_UNLOCK); - int res = -1; AST_RWLIST_TRAVERSE_SAFE_BEGIN(&supplements, iter, next) { if (supplement == iter) { AST_RWLIST_REMOVE_CURRENT(next); - res = 0; break; } } AST_RWLIST_TRAVERSE_SAFE_END; - - return res; -} - -void __ast_sip_unregister_supplement(struct ast_sip_supplement *supplement, - const char *file, int line, const char *func) -{ - if (!internal_sip_unregister_supplement(supplement)) { - __ast_module_unref(ast_module_info->self, file, line, func); - } } static int send_in_dialog_request(pjsip_tx_data *tdata, struct pjsip_dialog *dlg) @@ -4999,7 +4939,7 @@ static int unload_pjsip(void *data) ast_res_pjsip_destroy_configuration(); ast_sip_destroy_system(); ast_sip_destroy_global_headers(); - internal_sip_unregister_service(&supplement_module); + ast_sip_unregister_service(&supplement_module); ast_sip_destroy_transport_events(); } @@ -5099,8 +5039,6 @@ static int load_module(void) { struct ast_threadpool_options options; - CHECK_PJPROJECT_MODULE_LOADED(); - /* pjproject and config_system need to be initialized before all else */ if (pj_init() != PJ_SUCCESS) { return AST_MODULE_LOAD_DECLINE; @@ -5166,7 +5104,7 @@ static int load_module(void) goto error; } - if (internal_sip_register_service(&supplement_module)) { + if (ast_sip_register_service(&supplement_module)) { ast_log(LOG_ERROR, "Failed to initialize supplement hooks. Aborting load\n"); goto error; } @@ -5183,8 +5121,6 @@ static int load_module(void) AST_TEST_REGISTER(xml_sanitization_end_null); AST_TEST_REGISTER(xml_sanitization_exceeds_buffer); - ast_pjproject_ref(); - return AST_MODULE_LOAD_SUCCESS; error: @@ -5226,8 +5162,6 @@ static int unload_module(void) serializer_pool_shutdown(); ast_threadpool_shutdown(sip_threadpool); - ast_pjproject_unref(); - return 0; } diff --git a/res/res_pjsip/config_auth.c b/res/res_pjsip/config_auth.c index 47326815b7940e2706d15290c2a5d69dfa381d1a..b1bf9c422f59535428907bbe4ec9dd46084c92fa 100644 --- a/res/res_pjsip/config_auth.c +++ b/res/res_pjsip/config_auth.c @@ -374,7 +374,7 @@ int ast_sip_initialize_sorcery_auth(void) ast_sorcery_object_field_register_custom(sorcery, SIP_SORCERY_AUTH_TYPE, "auth_type", "userpass", auth_type_handler, auth_type_to_str, NULL, 0, 0); - internal_sip_register_endpoint_formatter(&endpoint_auth_formatter); + ast_sip_register_endpoint_formatter(&endpoint_auth_formatter); cli_formatter = ao2_alloc(sizeof(struct ast_sip_cli_formatter_entry), NULL); if (!cli_formatter) { @@ -403,7 +403,7 @@ int ast_sip_destroy_sorcery_auth(void) { ast_cli_unregister_multiple(cli_commands, ARRAY_LEN(cli_commands)); ast_sip_unregister_cli_formatter(cli_formatter); - internal_sip_unregister_endpoint_formatter(&endpoint_auth_formatter); + ast_sip_unregister_endpoint_formatter(&endpoint_auth_formatter); ast_manager_unregister("PJSIPShowAuths"); diff --git a/res/res_pjsip/config_transport.c b/res/res_pjsip/config_transport.c index 713ab024beb01e056f6a193e63805494caf8758f..15c03769b818366506cc434b49982075701c2b8e 100644 --- a/res/res_pjsip/config_transport.c +++ b/res/res_pjsip/config_transport.c @@ -1436,7 +1436,7 @@ int ast_sip_initialize_sorcery_transport(void) ast_sorcery_object_field_register(sorcery, "transport", "allow_reload", "no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_transport, allow_reload)); ast_sorcery_object_field_register(sorcery, "transport", "symmetric_transport", "no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_transport, symmetric_transport)); - internal_sip_register_endpoint_formatter(&endpoint_transport_formatter); + ast_sip_register_endpoint_formatter(&endpoint_transport_formatter); cli_formatter = ao2_alloc(sizeof(struct ast_sip_cli_formatter_entry), NULL); if (!cli_formatter) { @@ -1466,7 +1466,7 @@ int ast_sip_destroy_sorcery_transport(void) ast_cli_unregister_multiple(cli_commands, ARRAY_LEN(cli_commands)); ast_sip_unregister_cli_formatter(cli_formatter); - internal_sip_unregister_endpoint_formatter(&endpoint_transport_formatter); + ast_sip_unregister_endpoint_formatter(&endpoint_transport_formatter); ao2_ref(transport_states, -1); transport_states = NULL; diff --git a/res/res_pjsip/include/res_pjsip_private.h b/res/res_pjsip/include/res_pjsip_private.h index 5ce3c6fafc9ba885225c80a6fff7e0b4a15054b1..7fafd80072e1e84663704925fa3b336f9b5dc0ec 100644 --- a/res/res_pjsip/include/res_pjsip_private.h +++ b/res/res_pjsip/include/res_pjsip_private.h @@ -314,56 +314,8 @@ int sip_cli_print_global(struct ast_sip_cli_context *context); */ int sip_cli_print_system(struct ast_sip_cli_context *context); -/*! - * \internal - * \brief Used by res_pjsip.so to register a service without adding a self reference - */ -int internal_sip_register_service(pjsip_module *module); - -/*! - * \internal - * \brief Used by res_pjsip.so to unregister a service without removing a self reference - */ -int internal_sip_unregister_service(pjsip_module *module); - -/*! - * \internal - * \brief Used by res_pjsip.so to register a supplement without adding a self reference - */ -void internal_sip_register_supplement(struct ast_sip_supplement *supplement); - -/*! - * \internal - * \brief Used by res_pjsip.so to unregister a supplement without removing a self reference - */ -int internal_sip_unregister_supplement(struct ast_sip_supplement *supplement); - -/*! - * \internal - * \brief Used by res_pjsip.so to register an endpoint formatter without adding a self reference - */ -void internal_sip_register_endpoint_formatter(struct ast_sip_endpoint_formatter *obj); - -/*! - * \internal - * \brief Used by res_pjsip.so to unregister a endpoint formatter without removing a self reference - */ -int internal_sip_unregister_endpoint_formatter(struct ast_sip_endpoint_formatter *obj); - struct ast_sip_session_supplement; -/*! - * \internal - * \brief Used by res_pjsip.so to register a session supplement without adding a self reference - */ -void internal_sip_session_register_supplement(struct ast_sip_session_supplement *supplement); - -/*! - * \internal - * \brief Used by res_pjsip.so to unregister a session supplement without removing a self reference - */ -int internal_sip_session_unregister_supplement(struct ast_sip_session_supplement *supplement); - /*! * \internal * \brief Finds or creates contact_status for a contact diff --git a/res/res_pjsip/location.c b/res/res_pjsip/location.c index eb9e58870fc8854c3f7f20d596b3ca9dabdc4b21..84f73c742bf4a107bbae88ea4fda4fddd4f728ef 100644 --- a/res/res_pjsip/location.c +++ b/res/res_pjsip/location.c @@ -1346,7 +1346,7 @@ int ast_sip_initialize_sorcery_location(void) ast_sorcery_object_field_register(sorcery, "aor", "outbound_proxy", "", OPT_STRINGFIELD_T, 0, STRFLDSET(struct ast_sip_aor, outbound_proxy)); ast_sorcery_object_field_register(sorcery, "aor", "support_path", "no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_aor, support_path)); - internal_sip_register_endpoint_formatter(&endpoint_aor_formatter); + ast_sip_register_endpoint_formatter(&endpoint_aor_formatter); contact_formatter = ao2_alloc(sizeof(struct ast_sip_cli_formatter_entry), NULL); if (!contact_formatter) { @@ -1402,7 +1402,7 @@ int ast_sip_destroy_sorcery_location(void) ast_sip_unregister_cli_formatter(aor_formatter); ast_manager_unregister("PJSIPShowAors"); - internal_sip_unregister_endpoint_formatter(&endpoint_aor_formatter); + ast_sip_unregister_endpoint_formatter(&endpoint_aor_formatter); return 0; } diff --git a/res/res_pjsip/pjsip_distributor.c b/res/res_pjsip/pjsip_distributor.c index b4828d89fb08ee732b202f41ca5410bc017f37e0..c239c1a79bd4d360b53cf4852edf16ab15311ef8 100644 --- a/res/res_pjsip/pjsip_distributor.c +++ b/res/res_pjsip/pjsip_distributor.c @@ -1243,15 +1243,15 @@ int ast_sip_initialize_distributor(void) return -1; } - if (internal_sip_register_service(&distributor_mod)) { + if (ast_sip_register_service(&distributor_mod)) { ast_sip_destroy_distributor(); return -1; } - if (internal_sip_register_service(&endpoint_mod)) { + if (ast_sip_register_service(&endpoint_mod)) { ast_sip_destroy_distributor(); return -1; } - if (internal_sip_register_service(&auth_mod)) { + if (ast_sip_register_service(&auth_mod)) { ast_sip_destroy_distributor(); return -1; } @@ -1282,9 +1282,9 @@ void ast_sip_destroy_distributor(void) ast_cli_unregister_multiple(cli_commands, ARRAY_LEN(cli_commands)); ast_sip_unregister_cli_formatter(unid_formatter); - internal_sip_unregister_service(&auth_mod); - internal_sip_unregister_service(&endpoint_mod); - internal_sip_unregister_service(&distributor_mod); + ast_sip_unregister_service(&auth_mod); + ast_sip_unregister_service(&endpoint_mod); + ast_sip_unregister_service(&distributor_mod); ao2_global_obj_release(artificial_auth); ao2_cleanup(artificial_endpoint); diff --git a/res/res_pjsip/pjsip_global_headers.c b/res/res_pjsip/pjsip_global_headers.c index 4de28b586abd7980f380927a72f30f9fc6ac714d..52075ae5c387e38cf41f84eb550bc1b5b3bc8e0d 100644 --- a/res/res_pjsip/pjsip_global_headers.c +++ b/res/res_pjsip/pjsip_global_headers.c @@ -165,7 +165,7 @@ void ast_sip_initialize_global_headers(void) AST_RWLIST_HEAD_INIT(&request_headers); AST_RWLIST_HEAD_INIT(&response_headers); - internal_sip_register_service(&global_header_mod); + ast_sip_register_service(&global_header_mod); } static void destroy_headers(struct header_list *headers) @@ -183,5 +183,5 @@ void ast_sip_destroy_global_headers(void) destroy_headers(&request_headers); destroy_headers(&response_headers); - internal_sip_unregister_service(&global_header_mod); + ast_sip_unregister_service(&global_header_mod); } diff --git a/res/res_pjsip/pjsip_message_filter.c b/res/res_pjsip/pjsip_message_filter.c index 427aec7404423cec3638ad269274573c86a03ebe..f948c4449cc155fc3a23daf63165df16d569ff12 100644 --- a/res/res_pjsip/pjsip_message_filter.c +++ b/res/res_pjsip/pjsip_message_filter.c @@ -517,24 +517,24 @@ static pj_bool_t filter_on_rx_message(pjsip_rx_data *rdata) void ast_res_pjsip_cleanup_message_filter(void) { - internal_sip_unregister_service(&filter_module_tsx); - internal_sip_unregister_service(&filter_module_transport); - internal_sip_unregister_supplement(&filter_supplement); - internal_sip_session_unregister_supplement(&filter_session_supplement); + ast_sip_unregister_service(&filter_module_tsx); + ast_sip_unregister_service(&filter_module_transport); + ast_sip_unregister_supplement(&filter_supplement); + ast_sip_session_unregister_supplement(&filter_session_supplement); } int ast_res_pjsip_init_message_filter(void) { - internal_sip_session_register_supplement(&filter_session_supplement); - internal_sip_register_supplement(&filter_supplement); + ast_sip_session_register_supplement(&filter_session_supplement); + ast_sip_register_supplement(&filter_supplement); - if (internal_sip_register_service(&filter_module_transport)) { + if (ast_sip_register_service(&filter_module_transport)) { ast_log(LOG_ERROR, "Could not register message filter module for incoming and outgoing requests\n"); ast_res_pjsip_cleanup_message_filter(); return -1; } - if (internal_sip_register_service(&filter_module_tsx)) { + if (ast_sip_register_service(&filter_module_tsx)) { ast_log(LOG_ERROR, "Could not register message filter module for incoming and outgoing requests\n"); ast_res_pjsip_cleanup_message_filter(); return -1; diff --git a/res/res_pjsip/pjsip_options.c b/res/res_pjsip/pjsip_options.c index 3465eae34acc0979598252d138a481ccea37ce73..4ae1f31d1b658bd41629726545dff73120ddcfc8 100644 --- a/res/res_pjsip/pjsip_options.c +++ b/res/res_pjsip/pjsip_options.c @@ -1562,7 +1562,7 @@ int ast_res_pjsip_init_options_handling(int reload) return -1; } - internal_sip_register_endpoint_formatter(&contact_status_formatter); + ast_sip_register_endpoint_formatter(&contact_status_formatter); ast_manager_register_xml("PJSIPQualify", EVENT_FLAG_SYSTEM | EVENT_FLAG_REPORTING, ami_sip_qualify); ast_manager_register_xml("PJSIPShowContacts", EVENT_FLAG_SYSTEM, ami_show_contacts); ast_cli_register_multiple(cli_options, ARRAY_LEN(cli_options)); @@ -1578,7 +1578,7 @@ void ast_res_pjsip_cleanup_options_handling(void) ast_cli_unregister_multiple(cli_options, ARRAY_LEN(cli_options)); ast_manager_unregister("PJSIPQualify"); ast_manager_unregister("PJSIPShowContacts"); - internal_sip_unregister_endpoint_formatter(&contact_status_formatter); + ast_sip_unregister_endpoint_formatter(&contact_status_formatter); ast_sorcery_observer_remove(ast_sip_get_sorcery(), "aor", &observer_callbacks_options); pjsip_endpt_unregister_module(ast_sip_get_pjsip_endpoint(), &options_module); diff --git a/res/res_pjsip/pjsip_session.c b/res/res_pjsip/pjsip_session.c index 153561ce76ad276a54bf37972679cd8b10143038..f3f3a4d8782bb401da7a14acc9c8d028b6e3a2fd 100644 --- a/res/res_pjsip/pjsip_session.c +++ b/res/res_pjsip/pjsip_session.c @@ -32,7 +32,7 @@ AST_RWLIST_HEAD_STATIC(session_supplements, ast_sip_session_supplement); -void internal_sip_session_register_supplement(struct ast_sip_session_supplement *supplement) +void ast_sip_session_register_supplement(struct ast_sip_session_supplement *supplement) { struct ast_sip_session_supplement *iter; int inserted = 0; @@ -56,39 +56,18 @@ void internal_sip_session_register_supplement(struct ast_sip_session_supplement } } -int __ast_sip_session_register_supplement(struct ast_sip_session_supplement *supplement, - const char *file, int line, const char *func) -{ - internal_sip_session_register_supplement(supplement); - __ast_module_ref(AST_MODULE_SELF, file, line, func); - - return 0; -} - -int internal_sip_session_unregister_supplement(struct ast_sip_session_supplement *supplement) +void ast_sip_session_unregister_supplement(struct ast_sip_session_supplement *supplement) { struct ast_sip_session_supplement *iter; - int res = -1; SCOPED_LOCK(lock, &session_supplements, AST_RWLIST_WRLOCK, AST_RWLIST_UNLOCK); AST_RWLIST_TRAVERSE_SAFE_BEGIN(&session_supplements, iter, next) { if (supplement == iter) { AST_RWLIST_REMOVE_CURRENT(next); - res = 0; break; } } AST_RWLIST_TRAVERSE_SAFE_END; - - return res; -} - -void __ast_sip_session_unregister_supplement(struct ast_sip_session_supplement *supplement, - const char *file, int line, const char *func) -{ - if (!internal_sip_session_unregister_supplement(supplement)) { - __ast_module_unref(AST_MODULE_SELF, file, line, func); - } } static struct ast_sip_session_supplement *supplement_dup(const struct ast_sip_session_supplement *src) diff --git a/res/res_pjsip_acl.c b/res/res_pjsip_acl.c index 9269864228d5d8eac7c8416eefa532fa8b734002..8caf70344a775bf03c95c35a6ba4ed2e01ddf39d 100644 --- a/res/res_pjsip_acl.c +++ b/res/res_pjsip_acl.c @@ -282,8 +282,6 @@ static void *acl_alloc(const char *name) static int load_module(void) { - CHECK_PJSIP_MODULE_LOADED(); - ast_sorcery_apply_config(ast_sip_get_sorcery(), SIP_SORCERY_ACL_TYPE); ast_sorcery_apply_default(ast_sip_get_sorcery(), SIP_SORCERY_ACL_TYPE, "config", "pjsip.conf,criteria=type=acl"); diff --git a/res/res_pjsip_authenticator_digest.c b/res/res_pjsip_authenticator_digest.c index b6f2b74ff399de1cee081bc24558a888cc714712..518ef73bb146a2ce2cf8c86c40758fbc00527455 100644 --- a/res/res_pjsip_authenticator_digest.c +++ b/res/res_pjsip_authenticator_digest.c @@ -524,8 +524,6 @@ static int reload_module(void) static int load_module(void) { - CHECK_PJSIP_MODULE_LOADED(); - if (build_entity_id()) { return AST_MODULE_LOAD_DECLINE; } diff --git a/res/res_pjsip_caller_id.c b/res/res_pjsip_caller_id.c index 16731479e461c051a03fb2fad9c4f1d83dacf723..f15a66c05085372a180b3a4686a85b46a4fabfde 100644 --- a/res/res_pjsip_caller_id.c +++ b/res/res_pjsip_caller_id.c @@ -746,8 +746,6 @@ static struct ast_sip_session_supplement caller_id_supplement = { static int load_module(void) { - CHECK_PJSIP_SESSION_MODULE_LOADED(); - ast_sip_session_register_supplement(&caller_id_supplement); return AST_MODULE_LOAD_SUCCESS; } diff --git a/res/res_pjsip_dialog_info_body_generator.c b/res/res_pjsip_dialog_info_body_generator.c index 866ea9df805b79492b8f838d6b4974a616c8b94f..a13995faca907659f8e3b0eb2e766dddf287de67 100644 --- a/res/res_pjsip_dialog_info_body_generator.c +++ b/res/res_pjsip_dialog_info_body_generator.c @@ -198,8 +198,6 @@ static struct ast_sip_pubsub_body_generator dialog_info_body_generator = { static int load_module(void) { - CHECK_PJSIP_PUBSUB_MODULE_LOADED(); - if (ast_sip_pubsub_register_body_generator(&dialog_info_body_generator)) { return AST_MODULE_LOAD_DECLINE; } diff --git a/res/res_pjsip_diversion.c b/res/res_pjsip_diversion.c index 84c42dca85cbf0ea3de6497830aa195c06f5ee93..e82140b723d3c56f1dd07cdc4ccc2013a39bdfe8 100644 --- a/res/res_pjsip_diversion.c +++ b/res/res_pjsip_diversion.c @@ -411,8 +411,6 @@ static struct ast_sip_session_supplement diversion_supplement = { static int load_module(void) { - CHECK_PJSIP_SESSION_MODULE_LOADED(); - ast_sip_session_register_supplement(&diversion_supplement); return AST_MODULE_LOAD_SUCCESS; } @@ -428,5 +426,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "PJSIP Add Diversion H .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_APP_DEPEND, - .requires = "res_pjsip", + .requires = "res_pjsip,res_pjsip_session", ); diff --git a/res/res_pjsip_dlg_options.c b/res/res_pjsip_dlg_options.c index 565ad2afc4345ebdf25095be19468e633183c949..93e3f228e865ae1fd1f00002c8b072566487604b 100644 --- a/res/res_pjsip_dlg_options.c +++ b/res/res_pjsip_dlg_options.c @@ -83,11 +83,8 @@ static struct ast_sip_session_supplement dlg_options_supplement = { static int load_module(void) { - CHECK_PJSIP_MODULE_LOADED(); + ast_sip_session_register_supplement(&dlg_options_supplement); - if (ast_sip_session_register_supplement(&dlg_options_supplement)) { - return AST_MODULE_LOAD_DECLINE; - } return AST_MODULE_LOAD_SUCCESS; } diff --git a/res/res_pjsip_dtmf_info.c b/res/res_pjsip_dtmf_info.c index 68df61785d3d699195df1cf6a75f6dd7892a2b0c..983498def08aedb6e24b8c0ed5a58ac3831e5b84 100644 --- a/res/res_pjsip_dtmf_info.c +++ b/res/res_pjsip_dtmf_info.c @@ -160,8 +160,6 @@ static struct ast_sip_session_supplement dtmf_info_supplement = { static int load_module(void) { - CHECK_PJSIP_SESSION_MODULE_LOADED(); - ast_sip_session_register_supplement(&dtmf_info_supplement); return AST_MODULE_LOAD_SUCCESS; } @@ -177,5 +175,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "PJSIP DTMF INFO Suppo .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_APP_DEPEND, - .requires = "res_pjsip", + .requires = "res_pjsip,res_pjsip_session", ); diff --git a/res/res_pjsip_empty_info.c b/res/res_pjsip_empty_info.c index c67835ce02d45fbeaf4bbda99a3ab19d3c57c61a..74e5729a540b692b492b90069113bd0582d56d76 100644 --- a/res/res_pjsip_empty_info.c +++ b/res/res_pjsip_empty_info.c @@ -66,8 +66,6 @@ static struct ast_sip_session_supplement empty_info_supplement = { static int load_module(void) { - CHECK_PJSIP_SESSION_MODULE_LOADED(); - ast_sip_session_register_supplement(&empty_info_supplement); return AST_MODULE_LOAD_SUCCESS; } @@ -83,5 +81,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "PJSIP Empty INFO Supp .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_APP_DEPEND, - .requires = "res_pjsip", + .requires = "res_pjsip,res_pjsip_session", ); diff --git a/res/res_pjsip_endpoint_identifier_anonymous.c b/res/res_pjsip_endpoint_identifier_anonymous.c index 16662ebd50b9c1128ab3d58eb0725258cf2ee922..918aec553be382be4448c79ed89698be3e330f3a 100644 --- a/res/res_pjsip_endpoint_identifier_anonymous.c +++ b/res/res_pjsip_endpoint_identifier_anonymous.c @@ -116,8 +116,6 @@ static struct ast_sip_endpoint_identifier anonymous_identifier = { static int load_module(void) { - CHECK_PJSIP_MODULE_LOADED(); - ast_sip_register_endpoint_identifier_with_name(&anonymous_identifier, "anonymous"); return AST_MODULE_LOAD_SUCCESS; } diff --git a/res/res_pjsip_endpoint_identifier_ip.c b/res/res_pjsip_endpoint_identifier_ip.c index ee47e4d4e61029a6a3c277bbe1bca943555dab38..555d653317208b7124f9bfa277c4bbd595f8d210 100644 --- a/res/res_pjsip_endpoint_identifier_ip.c +++ b/res/res_pjsip_endpoint_identifier_ip.c @@ -717,8 +717,6 @@ static struct ast_sip_cli_formatter_entry *cli_formatter; static int load_module(void) { - CHECK_PJSIP_MODULE_LOADED(); - ast_sorcery_apply_config(ast_sip_get_sorcery(), "res_pjsip_endpoint_identifier_ip"); ast_sorcery_apply_default(ast_sip_get_sorcery(), "identify", "config", "pjsip.conf,criteria=type=identify"); diff --git a/res/res_pjsip_endpoint_identifier_user.c b/res/res_pjsip_endpoint_identifier_user.c index 1b0c7d99a0e5df10f1c6c4e8a8c2e958ae248038..e18d2fab32f3a46c957315025d12493368e2a179 100644 --- a/res/res_pjsip_endpoint_identifier_user.c +++ b/res/res_pjsip_endpoint_identifier_user.c @@ -195,8 +195,6 @@ static struct ast_sip_endpoint_identifier auth_username_identifier = { static int load_module(void) { - CHECK_PJSIP_MODULE_LOADED(); - ast_sip_register_endpoint_identifier_with_name(&username_identifier, "username"); ast_sip_register_endpoint_identifier_with_name(&auth_username_identifier, "auth_username"); return AST_MODULE_LOAD_SUCCESS; diff --git a/res/res_pjsip_exten_state.c b/res/res_pjsip_exten_state.c index e70eba7cdac8a5ff25a8015f7e06e06607cc31e8..47ec8b461d8eb454b769caddc391f56e5fc8c222 100644 --- a/res/res_pjsip_exten_state.c +++ b/res/res_pjsip_exten_state.c @@ -959,13 +959,6 @@ static int unload_module(void) static int load_module(void) { - CHECK_PJSIP_PUBSUB_MODULE_LOADED(); - - if (!ast_module_check("res_pjsip_outbound_publish.so")) { - ast_log(LOG_WARNING, "This module requires the 'res_pjsip_outbound_publish.so' module to be loaded\n"); - return AST_MODULE_LOAD_DECLINE; - } - publishers = ao2_container_alloc(PUBLISHER_BUCKETS, exten_state_publisher_hash, exten_state_publisher_cmp); if (!publishers) { diff --git a/res/res_pjsip_header_funcs.c b/res/res_pjsip_header_funcs.c index 06fba0635e2ad75c7bc112ee62902f639348a71f..79302632d78745198ec59ac6e102c8bf599f9c5a 100644 --- a/res/res_pjsip_header_funcs.c +++ b/res/res_pjsip_header_funcs.c @@ -609,8 +609,6 @@ static struct ast_sip_session_supplement header_funcs_supplement = { static int load_module(void) { - CHECK_PJSIP_SESSION_MODULE_LOADED(); - ast_sip_session_register_supplement(&header_funcs_supplement); ast_custom_function_register(&pjsip_header_function); diff --git a/res/res_pjsip_history.c b/res/res_pjsip_history.c index 40d26d59dd177a9a7c9da0c843127e23f83cc1ef..fa9e27f0025e092e343c1b713c02eaab4fb3f39a 100644 --- a/res/res_pjsip_history.c +++ b/res/res_pjsip_history.c @@ -1364,8 +1364,6 @@ static struct ast_cli_entry cli_pjsip[] = { static int load_module(void) { - CHECK_PJSIP_MODULE_LOADED(); - log_level = ast_logger_register_level("PJSIP_HISTORY"); if (log_level < 0) { ast_log(LOG_WARNING, "Unable to register history log level\n"); diff --git a/res/res_pjsip_logger.c b/res/res_pjsip_logger.c index 460b6a34fea70fd5d8c190b9b1a91f2ef1807620..49ad6faec45f02949ba59de88557c8018c11cee1 100644 --- a/res/res_pjsip_logger.c +++ b/res/res_pjsip_logger.c @@ -231,8 +231,6 @@ static const struct ast_sorcery_observer global_observer = { static int load_module(void) { - CHECK_PJSIP_MODULE_LOADED(); - if (ast_sorcery_observer_add(ast_sip_get_sorcery(), "global", &global_observer)) { ast_log(LOG_WARNING, "Unable to add global observer\n"); return AST_MODULE_LOAD_DECLINE; diff --git a/res/res_pjsip_messaging.c b/res/res_pjsip_messaging.c index 3739bcf93316a2d814f788b4e7a53225a226b70a..cbaed83fb3aa6572a38f5945806ae126f4dd762f 100644 --- a/res/res_pjsip_messaging.c +++ b/res/res_pjsip_messaging.c @@ -805,8 +805,6 @@ static pjsip_module messaging_module = { static int load_module(void) { - CHECK_PJSIP_SESSION_MODULE_LOADED(); - if (ast_sip_register_service(&messaging_module) != PJ_SUCCESS) { return AST_MODULE_LOAD_DECLINE; } @@ -849,5 +847,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "PJSIP Messaging Suppo .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_APP_DEPEND, - .requires = "res_pjsip", + .requires = "res_pjsip,res_pjsip_session", ); diff --git a/res/res_pjsip_mwi.c b/res/res_pjsip_mwi.c index 92dc7dc65c3920cadbae53983e344a04766293bd..90fdc098c2939b75620b2f618be9fb50a05b4a79 100644 --- a/res/res_pjsip_mwi.c +++ b/res/res_pjsip_mwi.c @@ -1339,8 +1339,6 @@ static int reload(void) static int load_module(void) { - CHECK_PJSIP_MODULE_LOADED(); - if (ast_sip_register_subscription_handler(&mwi_handler)) { return AST_MODULE_LOAD_DECLINE; } diff --git a/res/res_pjsip_mwi_body_generator.c b/res/res_pjsip_mwi_body_generator.c index 65ac600673e34d3626c254e9179982309c5ea649..29b2ed027baf82a206272797a3251fa9b5c38c06 100644 --- a/res/res_pjsip_mwi_body_generator.c +++ b/res/res_pjsip_mwi_body_generator.c @@ -97,8 +97,6 @@ static struct ast_sip_pubsub_body_generator mwi_generator = { static int load_module(void) { - CHECK_PJSIP_PUBSUB_MODULE_LOADED(); - if (ast_sip_pubsub_register_body_generator(&mwi_generator)) { return AST_MODULE_LOAD_DECLINE; } diff --git a/res/res_pjsip_nat.c b/res/res_pjsip_nat.c index 4231a1ec35fe5241d59dc7ecf9f00fa3b399fc75..1d42805d84445f8567ab94bc57f983e5c5c07a04 100644 --- a/res/res_pjsip_nat.c +++ b/res/res_pjsip_nat.c @@ -357,18 +357,12 @@ static int unload_module(void) static int load_module(void) { - CHECK_PJSIP_SESSION_MODULE_LOADED(); - if (ast_sip_register_service(&nat_module)) { ast_log(LOG_ERROR, "Could not register NAT module for incoming and outgoing requests\n"); return AST_MODULE_LOAD_DECLINE; } - if (ast_sip_session_register_supplement(&nat_supplement)) { - ast_log(LOG_ERROR, "Could not register NAT session supplement for incoming and outgoing INVITE requests\n"); - unload_module(); - return AST_MODULE_LOAD_DECLINE; - } + ast_sip_session_register_supplement(&nat_supplement); return AST_MODULE_LOAD_SUCCESS; } @@ -378,5 +372,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "PJSIP NAT Support", .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_APP_DEPEND, - .requires = "res_pjsip", + .requires = "res_pjsip,res_pjsip_session", ); diff --git a/res/res_pjsip_notify.c b/res/res_pjsip_notify.c index 9767c56b5c17f5f5f804ac23fa67030930c6f166..253cf9ac877eb550439890f15f18a3954f3390d2 100644 --- a/res/res_pjsip_notify.c +++ b/res/res_pjsip_notify.c @@ -987,8 +987,6 @@ static int manager_notify(struct mansession *s, const struct message *m) static int load_module(void) { - CHECK_PJSIP_MODULE_LOADED(); - if (aco_info_init(¬ify_cfg)) { return AST_MODULE_LOAD_DECLINE; } diff --git a/res/res_pjsip_one_touch_record_info.c b/res/res_pjsip_one_touch_record_info.c index ef59fca138b4c2d59f37a9d9fb9a38d5f56cc11a..50f2a383211d03d90b535ccc1ebb1a3c1cb50a8e 100644 --- a/res/res_pjsip_one_touch_record_info.c +++ b/res/res_pjsip_one_touch_record_info.c @@ -107,12 +107,7 @@ static struct ast_sip_session_supplement info_supplement = { static int load_module(void) { - CHECK_PJSIP_SESSION_MODULE_LOADED(); - - if (ast_sip_session_register_supplement(&info_supplement)) { - ast_log(LOG_ERROR, "Unable to register One Touch Recording supplement\n"); - return AST_MODULE_LOAD_DECLINE; - } + ast_sip_session_register_supplement(&info_supplement); return AST_MODULE_LOAD_SUCCESS; } @@ -128,5 +123,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "PJSIP INFO One Touch .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_APP_DEPEND, - .requires = "res_pjsip", + .requires = "res_pjsip,res_pjsip_session", ); diff --git a/res/res_pjsip_outbound_authenticator_digest.c b/res/res_pjsip_outbound_authenticator_digest.c index 54bba08de2e419431fb3663ce5727d886698ed86..063b4d3eb8c4257e63ce23c8ac457d08ea3ce461 100644 --- a/res/res_pjsip_outbound_authenticator_digest.c +++ b/res/res_pjsip_outbound_authenticator_digest.c @@ -205,8 +205,6 @@ static struct ast_sip_outbound_authenticator digest_authenticator = { static int load_module(void) { - CHECK_PJSIP_MODULE_LOADED(); - if (ast_sip_register_outbound_authenticator(&digest_authenticator)) { return AST_MODULE_LOAD_DECLINE; } diff --git a/res/res_pjsip_outbound_publish.c b/res/res_pjsip_outbound_publish.c index b4e3320f4685065b65ad30dcb136d9cfb18a131b..75e74a26fe0d5f2cca200b25f8273445ced88211 100644 --- a/res/res_pjsip_outbound_publish.c +++ b/res/res_pjsip_outbound_publish.c @@ -345,7 +345,6 @@ AST_RWLIST_HEAD_STATIC(publisher_handlers, ast_sip_event_publisher_handler); static void sub_add_handler(struct ast_sip_event_publisher_handler *handler) { AST_RWLIST_INSERT_TAIL(&publisher_handlers, handler, next); - ast_module_ref(ast_module_info->self); } static struct ast_sip_event_publisher_handler *find_publisher_handler_for_event_name(const char *event_name) @@ -643,7 +642,6 @@ void ast_sip_unregister_event_publisher_handler(struct ast_sip_event_publisher_h AST_RWLIST_TRAVERSE_SAFE_BEGIN(&publisher_handlers, iter, next) { if (handler == iter) { AST_RWLIST_REMOVE_CURRENT(next); - ast_module_unref(ast_module_info->self); break; } } @@ -1643,8 +1641,6 @@ static int unload_module(void) static int load_module(void) { - CHECK_PJSIP_MODULE_LOADED(); - /* As of pjproject 2.4.5, PJSIP_MAX_URL_SIZE isn't exposed yet but we try anyway. */ ast_pjproject_get_buildopt("PJSIP_MAX_URL_SIZE", "%d", &pjsip_max_url_size); diff --git a/res/res_pjsip_outbound_registration.c b/res/res_pjsip_outbound_registration.c index 80b885fb43363c187c8ab1dc4328d93e50d2e85b..4baf23c93b099c242c229dec849d76f51d98fe08 100644 --- a/res/res_pjsip_outbound_registration.c +++ b/res/res_pjsip_outbound_registration.c @@ -2177,8 +2177,6 @@ static int load_module(void) { struct ao2_container *new_states; - CHECK_PJSIP_MODULE_LOADED(); - shutdown_group = ast_serializer_shutdown_group_alloc(); if (!shutdown_group) { return AST_MODULE_LOAD_DECLINE; diff --git a/res/res_pjsip_path.c b/res/res_pjsip_path.c index b245f159d2f9ebe293e8d0e03638821136e3e4aa..3c545f9d291de9c333b19edbd13eb25541b39f54 100644 --- a/res/res_pjsip_path.c +++ b/res/res_pjsip_path.c @@ -238,16 +238,8 @@ static struct ast_sip_session_supplement path_session_supplement = { static int load_module(void) { - CHECK_PJSIP_SESSION_MODULE_LOADED(); - - if (ast_sip_register_supplement(&path_supplement)) { - return AST_MODULE_LOAD_DECLINE; - } - - if (ast_sip_session_register_supplement(&path_session_supplement)) { - ast_sip_unregister_supplement(&path_supplement); - return AST_MODULE_LOAD_DECLINE; - } + ast_sip_register_supplement(&path_supplement); + ast_sip_session_register_supplement(&path_session_supplement); return AST_MODULE_LOAD_SUCCESS; } @@ -264,5 +256,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "PJSIP Path Header Sup .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_APP_DEPEND, - .requires = "res_pjsip", + .requires = "res_pjsip,res_pjsip_session", ); diff --git a/res/res_pjsip_phoneprov_provider.c b/res/res_pjsip_phoneprov_provider.c index 11031c3c18924f6992193c8dc031b8749856716f..acb1e68b5bd45b41535189fda0861ea9ea11e2fe 100644 --- a/res/res_pjsip_phoneprov_provider.c +++ b/res/res_pjsip_phoneprov_provider.c @@ -367,8 +367,6 @@ static int load_users(void) static int load_module(void) { - CHECK_PJSIP_MODULE_LOADED(); - sorcery = ast_sip_get_sorcery(); ast_sorcery_apply_config(sorcery, "res_pjsip_phoneprov_provider"); diff --git a/res/res_pjsip_pidf_body_generator.c b/res/res_pjsip_pidf_body_generator.c index 6426dfa9dc97171d5fbf5084da9ca64abad3f8b4..8bc062e0856170a893e6e5c5c1a0f1c294770a3a 100644 --- a/res/res_pjsip_pidf_body_generator.c +++ b/res/res_pjsip_pidf_body_generator.c @@ -116,8 +116,6 @@ static struct ast_sip_pubsub_body_generator pidf_body_generator = { static int load_module(void) { - CHECK_PJSIP_PUBSUB_MODULE_LOADED(); - if (ast_sip_pubsub_register_body_generator(&pidf_body_generator)) { return AST_MODULE_LOAD_DECLINE; } diff --git a/res/res_pjsip_pidf_digium_body_supplement.c b/res/res_pjsip_pidf_digium_body_supplement.c index f855e2153faf5c3a96567e488ba7357561ac514b..832f4230257fdcc4fd33cc5ba94cc61244bccff3 100644 --- a/res/res_pjsip_pidf_digium_body_supplement.c +++ b/res/res_pjsip_pidf_digium_body_supplement.c @@ -95,8 +95,6 @@ static struct ast_sip_pubsub_body_supplement pidf_supplement = { static int load_module(void) { - CHECK_PJSIP_PUBSUB_MODULE_LOADED(); - if (ast_sip_pubsub_register_body_supplement(&pidf_supplement)) { return AST_MODULE_LOAD_DECLINE; } diff --git a/res/res_pjsip_pidf_eyebeam_body_supplement.c b/res/res_pjsip_pidf_eyebeam_body_supplement.c index 6629aa3c1c40217929ce3502002b9b210118c6b0..15446bc5299a6bb6073a299722c171871bcd56cf 100644 --- a/res/res_pjsip_pidf_eyebeam_body_supplement.c +++ b/res/res_pjsip_pidf_eyebeam_body_supplement.c @@ -92,8 +92,6 @@ static struct ast_sip_pubsub_body_supplement pidf_supplement = { static int load_module(void) { - CHECK_PJSIP_PUBSUB_MODULE_LOADED(); - if (ast_sip_pubsub_register_body_supplement(&pidf_supplement)) { return AST_MODULE_LOAD_DECLINE; } diff --git a/res/res_pjsip_publish_asterisk.c b/res/res_pjsip_publish_asterisk.c index 13d7fd43bd5ad3b2baa7e37195c2550fe03bacd7..220ba0bc5467b9a51517fad36c02985ee9f5e78a 100644 --- a/res/res_pjsip_publish_asterisk.c +++ b/res/res_pjsip_publish_asterisk.c @@ -855,8 +855,6 @@ static int regex_filter_handler(const struct aco_option *opt, struct ast_variabl static int load_module(void) { - CHECK_PJSIP_PUBSUB_MODULE_LOADED(); - if (ast_eid_is_empty(&ast_eid_default)) { ast_log(LOG_ERROR, "Entity ID is not set.\n"); return AST_MODULE_LOAD_DECLINE; diff --git a/res/res_pjsip_pubsub.c b/res/res_pjsip_pubsub.c index af696b849ae69be33ac6de962f53a5ebbe1df83e..369e06d4c38149714ef78993e323a97cc0b1398c 100644 --- a/res/res_pjsip_pubsub.c +++ b/res/res_pjsip_pubsub.c @@ -2583,8 +2583,6 @@ int ast_sip_register_publish_handler(struct ast_sip_publish_handler *handler) publish_add_handler(handler); - ast_module_ref(ast_module_info->self); - return 0; } @@ -2597,7 +2595,6 @@ void ast_sip_unregister_publish_handler(struct ast_sip_publish_handler *handler) if (handler == iter) { AST_RWLIST_REMOVE_CURRENT(next); ao2_cleanup(handler->publications); - ast_module_unref(ast_module_info->self); break; } } @@ -2611,7 +2608,6 @@ static void sub_add_handler(struct ast_sip_subscription_handler *handler) { AST_RWLIST_WRLOCK(&subscription_handlers); AST_RWLIST_INSERT_TAIL(&subscription_handlers, handler, next); - ast_module_ref(ast_module_info->self); AST_RWLIST_UNLOCK(&subscription_handlers); } @@ -2670,7 +2666,6 @@ void ast_sip_unregister_subscription_handler(struct ast_sip_subscription_handler AST_RWLIST_TRAVERSE_SAFE_BEGIN(&subscription_handlers, iter, next) { if (handler == iter) { AST_RWLIST_REMOVE_CURRENT(next); - ast_module_unref(ast_module_info->self); break; } } @@ -5378,8 +5373,6 @@ static int load_module(void) static const pj_str_t str_PUBLISH = { "PUBLISH", 7 }; struct ast_sorcery *sorcery; - CHECK_PJSIP_MODULE_LOADED(); - sorcery = ast_sip_get_sorcery(); if (!(sched = ast_sched_context_create())) { diff --git a/res/res_pjsip_refer.c b/res/res_pjsip_refer.c index 3100993defd5d1240b1616db32d3d44ec52720e5..5e0141b091385035f9412985eb9cc750de1594b5 100644 --- a/res/res_pjsip_refer.c +++ b/res/res_pjsip_refer.c @@ -1202,8 +1202,6 @@ static int load_module(void) { const pj_str_t str_norefersub = { "norefersub", 10 }; - CHECK_PJSIP_SESSION_MODULE_LOADED(); - pjsip_replaces_init_module(ast_sip_get_pjsip_endpoint()); pjsip_xfer_init_module(ast_sip_get_pjsip_endpoint()); pjsip_endpt_add_capability(ast_sip_get_pjsip_endpoint(), NULL, PJSIP_H_SUPPORTED, NULL, 1, &str_norefersub); diff --git a/res/res_pjsip_registrar.c b/res/res_pjsip_registrar.c index 7277a5f4fc43f3be5611eb454acfc99126bc90b5..00981fb775432c0fa79dfa8308d7433a75671674 100644 --- a/res/res_pjsip_registrar.c +++ b/res/res_pjsip_registrar.c @@ -1095,14 +1095,10 @@ static int load_module(void) { const pj_str_t STR_REGISTER = { "REGISTER", 8 }; - CHECK_PJPROJECT_MODULE_LOADED(); - ast_pjproject_get_buildopt("PJ_MAX_HOSTNAME", "%d", &pj_max_hostname); /* As of pjproject 2.4.5, PJSIP_MAX_URL_SIZE isn't exposed yet but we try anyway. */ ast_pjproject_get_buildopt("PJSIP_MAX_URL_SIZE", "%d", &pjsip_max_url_size); - CHECK_PJSIP_MODULE_LOADED(); - if (ast_sip_register_service(®istrar_module)) { return AST_MODULE_LOAD_DECLINE; } diff --git a/res/res_pjsip_registrar_expire.c b/res/res_pjsip_registrar_expire.c index 85e3fb859a30a224b5623708c15fb4b85de56964..e89ea0332607a060b5058b25d928fa10e29e780f 100644 --- a/res/res_pjsip_registrar_expire.c +++ b/res/res_pjsip_registrar_expire.c @@ -137,8 +137,6 @@ static int unload_module(void) static int load_module(void) { - CHECK_PJSIP_MODULE_LOADED(); - ast_sorcery_observer_add(ast_sip_get_sorcery(), "global", &expiration_global_observer); ast_sorcery_reload_object(ast_sip_get_sorcery(), "global"); diff --git a/res/res_pjsip_rfc3326.c b/res/res_pjsip_rfc3326.c index 8b8035efc0096a43734fcdf05345f5311045cc14..6c02a176c19d29be343c90968a4b4a982d9d7404 100644 --- a/res/res_pjsip_rfc3326.c +++ b/res/res_pjsip_rfc3326.c @@ -138,8 +138,6 @@ static struct ast_sip_session_supplement rfc3326_supplement = { static int load_module(void) { - CHECK_PJSIP_SESSION_MODULE_LOADED(); - ast_sip_session_register_supplement(&rfc3326_supplement); return AST_MODULE_LOAD_SUCCESS; } @@ -155,5 +153,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "PJSIP RFC3326 Support .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_APP_DEPEND, - .requires = "res_pjsip", + .requires = "res_pjsip,res_pjsip_session", ); diff --git a/res/res_pjsip_sdp_rtp.c b/res/res_pjsip_sdp_rtp.c index 3cc97644a04134f0554a2ba0ebe6ed83bbc6d4e3..ce8ed82dfe09ceee098e60c06ef3cd2fae52b9f7 100644 --- a/res/res_pjsip_sdp_rtp.c +++ b/res/res_pjsip_sdp_rtp.c @@ -1928,8 +1928,6 @@ static int unload_module(void) */ static int load_module(void) { - CHECK_PJSIP_SESSION_MODULE_LOADED(); - if (ast_check_ipv6()) { ast_sockaddr_parse(&address_rtp, "::", 0); } else { diff --git a/res/res_pjsip_send_to_voicemail.c b/res/res_pjsip_send_to_voicemail.c index 06c3edc034b306e049e73d1057f22e3e0f1d56a1..d689602757d2de309f56e2cccc223fd881940e4f 100644 --- a/res/res_pjsip_send_to_voicemail.c +++ b/res/res_pjsip_send_to_voicemail.c @@ -215,12 +215,7 @@ static struct ast_sip_session_supplement refer_supplement = { static int load_module(void) { - CHECK_PJSIP_SESSION_MODULE_LOADED(); - - if (ast_sip_session_register_supplement(&refer_supplement)) { - ast_log(LOG_ERROR, "Unable to register Send to Voicemail supplement\n"); - return AST_MODULE_LOAD_DECLINE; - } + ast_sip_session_register_supplement(&refer_supplement); return AST_MODULE_LOAD_SUCCESS; } diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c index 8247fbaaa4f8a7cc7c11a78d93b9a35b9d3f2e36..4d4ed4770e14b83192ba76429b96838b9110f92d 100644 --- a/res/res_pjsip_session.c +++ b/res/res_pjsip_session.c @@ -124,7 +124,7 @@ int ast_sip_session_register_sdp_handler(struct ast_sip_session_sdp_handler *han } AST_LIST_INSERT_TAIL(&handler_list->list, handler, next); ast_debug(1, "Registered SDP stream handler '%s' for stream type '%s'\n", handler->id, stream_type); - ast_module_ref(ast_module_info->self); + return 0; } @@ -141,7 +141,7 @@ int ast_sip_session_register_sdp_handler(struct ast_sip_session_sdp_handler *han return -1; } ast_debug(1, "Registered SDP stream handler '%s' for stream type '%s'\n", handler->id, stream_type); - ast_module_ref(ast_module_info->self); + return 0; } @@ -156,7 +156,6 @@ static int remove_handler(void *obj, void *arg, void *data, int flags) if (!strcmp(iter->id, handler->id)) { AST_LIST_REMOVE_CURRENT(next); ast_debug(1, "Unregistered SDP stream handler '%s' for stream type '%s'\n", handler->id, stream_type); - ast_module_unref(ast_module_info->self); } } AST_LIST_TRAVERSE_SAFE_END; @@ -4156,8 +4155,6 @@ static int load_module(void) { pjsip_endpoint *endpt; - CHECK_PJSIP_MODULE_LOADED(); - if (!ast_sip_get_sorcery() || !ast_sip_get_pjsip_endpoint()) { return AST_MODULE_LOAD_DECLINE; } diff --git a/res/res_pjsip_sips_contact.c b/res/res_pjsip_sips_contact.c index 41b26df7dccc54a4c3dc295616071d713f931d2b..7c0ff43603b5f1248426aed644fe69370dfa2fe8 100644 --- a/res/res_pjsip_sips_contact.c +++ b/res/res_pjsip_sips_contact.c @@ -90,8 +90,6 @@ static int unload_module(void) static int load_module(void) { - CHECK_PJSIP_MODULE_LOADED(); - if (ast_sip_register_service(&sips_contact_module)) { return AST_MODULE_LOAD_DECLINE; } diff --git a/res/res_pjsip_t38.c b/res/res_pjsip_t38.c index 7b7cd9910a1e666d2fe7be540792b129b2065b08..249472ba94d1bc02e81b6042d5f09272b470c2e6 100644 --- a/res/res_pjsip_t38.c +++ b/res/res_pjsip_t38.c @@ -1023,18 +1023,13 @@ static int unload_module(void) */ static int load_module(void) { - CHECK_PJSIP_SESSION_MODULE_LOADED(); - if (ast_check_ipv6()) { ast_sockaddr_parse(&address, "::", 0); } else { ast_sockaddr_parse(&address, "0.0.0.0", 0); } - if (ast_sip_session_register_supplement(&t38_supplement)) { - ast_log(LOG_ERROR, "Unable to register T.38 session supplement\n"); - goto end; - } + ast_sip_session_register_supplement(&t38_supplement); if (ast_sip_session_register_sdp_handler(&image_sdp_handler, "image")) { ast_log(LOG_ERROR, "Unable to register SDP handler for image stream type\n"); diff --git a/res/res_pjsip_transport_management.c b/res/res_pjsip_transport_management.c index acffb86dca1bb84179c5518316d85e12f820ff7a..afaa24815f0567f14cf0f078c24027381f27d8ca 100644 --- a/res/res_pjsip_transport_management.c +++ b/res/res_pjsip_transport_management.c @@ -323,8 +323,6 @@ static int load_module(void) { struct ao2_container *transports; - CHECK_PJSIP_MODULE_LOADED(); - transports = ao2_container_alloc(TRANSPORTS_BUCKETS, monitored_transport_hash_fn, monitored_transport_cmp_fn); if (!transports) { diff --git a/res/res_pjsip_transport_websocket.c b/res/res_pjsip_transport_websocket.c index af1345f3515e502aad327897e6d7b95d2b428c28..974b150876f0cefd96f130b8adb5fbc0fb36b7f3 100644 --- a/res/res_pjsip_transport_websocket.c +++ b/res/res_pjsip_transport_websocket.c @@ -471,8 +471,6 @@ static struct ast_sip_session_supplement websocket_supplement = { static int load_module(void) { - CHECK_PJSIP_MODULE_LOADED(); - /* * We only need one transport type name (ws) defined. Firefox * and Chrome do not support anything other than secure websockets @@ -490,10 +488,7 @@ static int load_module(void) return AST_MODULE_LOAD_DECLINE; } - if (ast_sip_session_register_supplement(&websocket_supplement)) { - ast_sip_unregister_service(&websocket_module); - return AST_MODULE_LOAD_DECLINE; - } + ast_sip_session_register_supplement(&websocket_supplement); if (ast_websocket_add_protocol("sip", websocket_cb)) { ast_sip_session_unregister_supplement(&websocket_supplement); diff --git a/res/res_pjsip_xpidf_body_generator.c b/res/res_pjsip_xpidf_body_generator.c index f7c84db3dc8f9f0f6694521fcba0df7f35ba15e1..7395fd9b7301c49eda2b749952461383fb0caac2 100644 --- a/res/res_pjsip_xpidf_body_generator.c +++ b/res/res_pjsip_xpidf_body_generator.c @@ -148,8 +148,6 @@ static void unregister_all(void) static int load_module(void) { - CHECK_PJSIP_PUBSUB_MODULE_LOADED(); - if (ast_sip_pubsub_register_body_generator(&xpidf_body_generator)) { goto fail; } diff --git a/res/res_pktccops.c b/res/res_pktccops.c index 3a12285cbcd7650073ee91e797e62d8bd410c3ce..9beabfb3d5b613acb157ef5b6bfcac6e14755e22 100644 --- a/res/res_pktccops.c +++ b/res/res_pktccops.c @@ -1472,9 +1472,6 @@ static int load_module(void) ast_cli_register_multiple(cli_pktccops, sizeof(cli_pktccops) / sizeof(struct ast_cli_entry)); restart_pktc_thread(); - /* For Optional API. */ - ast_module_shutdown_ref(AST_MODULE_SELF); - return 0; } diff --git a/res/res_smdi.c b/res/res_smdi.c index 76e70c2747c7b863ca08fab7390490b973a64d72..1d4826a6a2d45f57aee544c5cac2b5d2e95da847 100644 --- a/res/res_smdi.c +++ b/res/res_smdi.c @@ -1405,9 +1405,6 @@ static int load_module(void) ast_custom_function_register(&smdi_msg_retrieve_function); ast_custom_function_register(&smdi_msg_function); - /* For Optional API. */ - ast_module_shutdown_ref(AST_MODULE_SELF); - return AST_MODULE_LOAD_SUCCESS; } diff --git a/res/res_stasis.c b/res/res_stasis.c index a60ec5fdec2457256f8b36a896a21fbb143b5291..dcd74141f4b48e583b36b77e3a7c6b57c880fcc5 100644 --- a/res/res_stasis.c +++ b/res/res_stasis.c @@ -1302,8 +1302,6 @@ static void remove_stasis_end_published(struct ast_channel *chan) int stasis_app_exec(struct ast_channel *chan, const char *app_name, int argc, char *argv[]) { - SCOPED_MODULE_USE(ast_module_info->self); - RAII_VAR(struct stasis_app *, app, NULL, ao2_cleanup); RAII_VAR(struct stasis_app_control *, control, NULL, control_unlink); struct ast_bridge *bridge = NULL; @@ -1654,11 +1652,6 @@ void stasis_app_register_event_source(struct stasis_app_event_source *obj) { AST_RWLIST_WRLOCK(&event_sources); AST_LIST_INSERT_TAIL(&event_sources, obj, next); - /* only need to bump the module ref on non-core sources because the - core ones are [un]registered by this module. */ - if (!stasis_app_is_core_event_source(obj)) { - ast_module_ref(ast_module_info->self); - } AST_RWLIST_UNLOCK(&event_sources); } @@ -1670,9 +1663,6 @@ void stasis_app_unregister_event_source(struct stasis_app_event_source *obj) AST_RWLIST_TRAVERSE_SAFE_BEGIN(&event_sources, source, next) { if (source == obj) { AST_RWLIST_REMOVE_CURRENT(next); - if (!stasis_app_is_core_event_source(obj)) { - ast_module_unref(ast_module_info->self); - } break; } } @@ -2036,16 +2026,6 @@ enum stasis_app_user_event_res stasis_app_user_event(const char *app_name, return STASIS_APP_USER_OK; } -void stasis_app_ref(void) -{ - ast_module_ref(ast_module_info->self); -} - -void stasis_app_unref(void) -{ - ast_module_unref(ast_module_info->self); -} - static int unload_module(void) { stasis_app_unregister_event_sources(); diff --git a/res/res_stasis_mailbox.c b/res/res_stasis_mailbox.c index 3d0e9db69114e6ab3e2e710a44d8425c11a36185..3f6bede8f31fc64da609cf85e30f4cf4330cee21 100644 --- a/res/res_stasis_mailbox.c +++ b/res/res_stasis_mailbox.c @@ -143,17 +143,11 @@ enum stasis_mailbox_result stasis_app_mailbox_delete( static int load_module(void) { - /* Must be done first */ - ast_mwi_external_ref(); - return AST_MODULE_LOAD_SUCCESS; } static int unload_module(void) { - /* Must be done last */ - ast_mwi_external_unref(); - return 0; } diff --git a/res/res_statsd.c b/res/res_statsd.c index 8565e41cb491701b1c16261b9fc9177b0e5b0ef1..3e0815218a9a87612a76423103a1f66e7e3aa74f 100644 --- a/res/res_statsd.c +++ b/res/res_statsd.c @@ -353,9 +353,6 @@ static int load_module(void) return AST_MODULE_LOAD_DECLINE; } - /* For Optional API. */ - ast_module_shutdown_ref(AST_MODULE_SELF); - return AST_MODULE_LOAD_SUCCESS; } diff --git a/res/stasis/app.c b/res/stasis/app.c index 854e7997742f26099418aa6eddf73e0443a8733c..18ac7d6edb6a922f23e95be88011ce7f6a034260 100644 --- a/res/stasis/app.c +++ b/res/stasis/app.c @@ -1600,13 +1600,6 @@ void stasis_app_register_event_sources(void) stasis_app_register_event_source(&endpoint_event_source); } -int stasis_app_is_core_event_source(struct stasis_app_event_source *obj) -{ - return obj == &endpoint_event_source || - obj == &bridge_event_source || - obj == &channel_event_source; -} - void stasis_app_unregister_event_sources(void) { stasis_app_unregister_event_source(&endpoint_event_source); diff --git a/rest-api-templates/res_ari_resource.c.mustache b/rest-api-templates/res_ari_resource.c.mustache index c69734539075de41b4c82db685fbd14e972b31d2..67a04d898c26fe5abd246e559395f2c00051b828 100644 --- a/rest-api-templates/res_ari_resource.c.mustache +++ b/rest-api-templates/res_ari_resource.c.mustache @@ -269,7 +269,6 @@ static int unload_module(void) ast_ari_websocket_events_event_websocket_dtor(); {{/has_websocket}} {{/apis}} - stasis_app_unref(); return 0; } @@ -277,43 +276,37 @@ static int load_module(void) { int res = 0; - CHECK_ARI_MODULE_LOADED(); - {{#apis}} {{#operations}} {{#has_websocket}} - /* This is scoped to not conflict with CHECK_ARI_MODULE_LOADED */ - { - struct ast_websocket_protocol *protocol; + struct ast_websocket_protocol *protocol; - if (ast_ari_websocket_{{c_name}}_{{c_nickname}}_init() == -1) { - return AST_MODULE_LOAD_DECLINE; - } + if (ast_ari_websocket_{{c_name}}_{{c_nickname}}_init() == -1) { + return AST_MODULE_LOAD_DECLINE; + } - {{full_name}}.ws_server = ast_websocket_server_create(); - if (!{{full_name}}.ws_server) { - ast_ari_websocket_events_event_websocket_dtor(); - return AST_MODULE_LOAD_DECLINE; - } + {{full_name}}.ws_server = ast_websocket_server_create(); + if (!{{full_name}}.ws_server) { + ast_ari_websocket_events_event_websocket_dtor(); + return AST_MODULE_LOAD_DECLINE; + } - protocol = ast_websocket_sub_protocol_alloc("{{websocket_protocol}}"); - if (!protocol) { - ao2_ref({{full_name}}.ws_server, -1); - {{full_name}}.ws_server = NULL; - ast_ari_websocket_events_event_websocket_dtor(); - return AST_MODULE_LOAD_DECLINE; - } - protocol->session_attempted = ast_ari_{{c_name}}_{{c_nickname}}_ws_attempted_cb; - protocol->session_established = ast_ari_{{c_name}}_{{c_nickname}}_ws_established_cb; + protocol = ast_websocket_sub_protocol_alloc("{{websocket_protocol}}"); + if (!protocol) { + ao2_ref({{full_name}}.ws_server, -1); + {{full_name}}.ws_server = NULL; + ast_ari_websocket_events_event_websocket_dtor(); + return AST_MODULE_LOAD_DECLINE; + } + protocol->session_attempted = ast_ari_{{c_name}}_{{c_nickname}}_ws_attempted_cb; + protocol->session_established = ast_ari_{{c_name}}_{{c_nickname}}_ws_established_cb; {{/has_websocket}} {{#is_websocket}} - res |= ast_websocket_server_add_protocol2({{full_name}}.ws_server, protocol); - } + res |= ast_websocket_server_add_protocol2({{full_name}}.ws_server, protocol); {{/is_websocket}} {{/operations}} {{/apis}} - stasis_app_ref(); res |= ast_ari_add_handler(&{{root_full_name}}); if (res) { unload_module(); diff --git a/tests/test_res_pjsip_scheduler.c b/tests/test_res_pjsip_scheduler.c index 47a7034ffbe279f399931c987a57d44a11b2fd8c..d0c2d90b52e64751f9f317a674e6568b54f999cd 100644 --- a/tests/test_res_pjsip_scheduler.c +++ b/tests/test_res_pjsip_scheduler.c @@ -376,8 +376,6 @@ AST_TEST_DEFINE(scheduler_policy) static int load_module(void) { - CHECK_PJSIP_MODULE_LOADED(); - AST_TEST_REGISTER(serialized_scheduler); AST_TEST_REGISTER(unserialized_scheduler); AST_TEST_REGISTER(scheduler_cleanup); diff --git a/tests/test_res_stasis.c b/tests/test_res_stasis.c index 077cc4c7a623a7761ec177197432de3496af06d0..2c7906a65d3cb4ed0059b8216e480fe315e8c269 100644 --- a/tests/test_res_stasis.c +++ b/tests/test_res_stasis.c @@ -179,13 +179,11 @@ static int unload_module(void) AST_TEST_UNREGISTER(app_invoke_dne); AST_TEST_UNREGISTER(app_invoke_one); AST_TEST_UNREGISTER(app_replaced); - stasis_app_unref(); return 0; } static int load_module(void) { - stasis_app_ref(); AST_TEST_REGISTER(app_replaced); AST_TEST_REGISTER(app_invoke_one); AST_TEST_REGISTER(app_invoke_dne); diff --git a/tests/test_utils.c b/tests/test_utils.c index bcb2df3758108ea321e09d47f3a60523d7b22764..051fee12bda1b8515fe4534e993cc19df8971758 100644 --- a/tests/test_utils.c +++ b/tests/test_utils.c @@ -391,7 +391,7 @@ AST_TEST_DEFINE(agi_loaded_test) } #endif - ast_agi_unregister(ast_module_info->self, &noop_command); + ast_agi_unregister(&noop_command); return res; }