diff options
author | Alexei Gradinari <alex2grad@gmail.com> | 2016-04-15 12:59:42 -0400 |
---|---|---|
committer | Richard Mudgett <rmudgett@digium.com> | 2016-04-27 10:58:25 -0500 |
commit | df3639700a7d7e6a9a2dd67fde74e14b4bb46a37 (patch) | |
tree | 7bea0a94530120b56b9f4e315fdad0c928698995 /res/res_pjsip_endpoint_identifier_user.c | |
parent | 5f788018592ec33e4b8928a614ca012fcc75542e (diff) |
res_pjsip: disable multi domain to improve realtime performace
This patch added new global pjsip option 'disable_multi_domain'.
Disabling Multi Domain can improve Realtime performance by reducing
number of database requests.
ASTERISK-25930 #close
Change-Id: I2e7160f3aae68475d52742107949a799aa2c7dc7
Diffstat (limited to 'res/res_pjsip_endpoint_identifier_user.c')
-rw-r--r-- | res/res_pjsip_endpoint_identifier_user.c | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/res/res_pjsip_endpoint_identifier_user.c b/res/res_pjsip_endpoint_identifier_user.c index aa6d398cf..10b08afb0 100644 --- a/res/res_pjsip_endpoint_identifier_user.c +++ b/res/res_pjsip_endpoint_identifier_user.c @@ -69,28 +69,30 @@ static struct ast_sip_endpoint *username_identify(pjsip_rx_data *rdata) return NULL; } - /* Attempt to find the endpoint given the name and domain provided */ - snprintf(id, sizeof(id), "%s@%s", endpoint_name, domain_name); - if ((endpoint = ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "endpoint", id))) { - goto done; - } - - /* See if an alias exists for the domain provided */ - if ((alias = ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "domain_alias", domain_name))) { - snprintf(id, sizeof(id), "%s@%s", endpoint_name, alias->domain); + if (!ast_sip_get_disable_multi_domain()) { + /* Attempt to find the endpoint given the name and domain provided */ + snprintf(id, sizeof(id), "%s@%s", endpoint_name, domain_name); if ((endpoint = ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "endpoint", id))) { goto done; } - } - /* See if the transport this came in on has a provided domain */ - if ((transport_states = ast_sip_get_transport_states()) - && (transport_state = ao2_callback(transport_states, 0, find_transport_state_in_use, rdata)) - && (transport = ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "transport", transport_state->id)) - && !ast_strlen_zero(transport->domain)) { - snprintf(id, sizeof(id), "anonymous@%s", transport->domain); - if ((endpoint = ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "endpoint", id))) { - goto done; + /* See if an alias exists for the domain provided */ + if ((alias = ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "domain_alias", domain_name))) { + snprintf(id, sizeof(id), "%s@%s", endpoint_name, alias->domain); + if ((endpoint = ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "endpoint", id))) { + goto done; + } + } + + /* See if the transport this came in on has a provided domain */ + if ((transport_states = ast_sip_get_transport_states()) + && (transport_state = ao2_callback(transport_states, 0, find_transport_state_in_use, rdata)) + && (transport = ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "transport", transport_state->id)) + && !ast_strlen_zero(transport->domain)) { + snprintf(id, sizeof(id), "anonymous@%s", transport->domain); + if ((endpoint = ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "endpoint", id))) { + goto done; + } } } |