diff options
Diffstat (limited to 'res/res_pjsip.c')
-rw-r--r-- | res/res_pjsip.c | 96 |
1 files changed, 15 insertions, 81 deletions
diff --git a/res/res_pjsip.c b/res/res_pjsip.c index 05f92f268..f7154aac9 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; } |