diff options
author | Kevin Harwell <kharwell@digium.com> | 2015-03-13 14:48:40 +0000 |
---|---|---|
committer | Kevin Harwell <kharwell@digium.com> | 2015-03-13 14:48:40 +0000 |
commit | 0497b7b1550a50cfe6da101f0253fec8866c499c (patch) | |
tree | 1dccc17fddf50c00400b8ab8abc6806f256e1cac /res/res_pjsip.c | |
parent | b9fd61f2c7575cc32bc4a8411eac52195e995c97 (diff) |
Revert - res_pjsip: Allow configuration of endpoint identifier query order
Due to a break in binary compatibility with some other modules these changes
are being reverted until the issue can be resolved.
ASTERISK-24840
Reported by: Mark Michelson
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432868 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'res/res_pjsip.c')
-rw-r--r-- | res/res_pjsip.c | 108 |
1 files changed, 3 insertions, 105 deletions
diff --git a/res/res_pjsip.c b/res/res_pjsip.c index e1771d9d8..133546126 100644 --- a/res/res_pjsip.c +++ b/res/res_pjsip.c @@ -36,7 +36,6 @@ #include "asterisk/uuid.h" #include "asterisk/sorcery.h" #include "asterisk/file.h" -#include "asterisk/cli.h" /*** MODULEINFO <depend>pjproject</depend> @@ -1194,11 +1193,6 @@ <synopsis>Enable/Disable SIP debug logging. Valid options include yes|no or a host address</synopsis> </configOption> - <configOption name="endpoint_identifier_order" default="ip,username,anonymous"> - <synopsis>The order by which endpoint identifiers are processed and checked. - Identifier names are usually derived from and can be found in the endpoint - identifier module itself (res_pjsip_endpoint_identifier_*)</synopsis> - </configOption> </configObject> </configFile> </configInfo> @@ -1964,7 +1958,6 @@ int ast_sip_create_request_with_auth(const struct ast_sip_auth_vector *auths, pj } struct endpoint_identifier_list { - unsigned int priority; struct ast_sip_endpoint_identifier *identifier; AST_RWLIST_ENTRY(endpoint_identifier_list) list; }; @@ -1973,8 +1966,7 @@ static AST_RWLIST_HEAD_STATIC(endpoint_identifiers, endpoint_identifier_list); int ast_sip_register_endpoint_identifier(struct ast_sip_endpoint_identifier *identifier) { - char *prev, *current, *identifier_order; - struct endpoint_identifier_list *iter, *id_list_item; + struct endpoint_identifier_list *id_list_item; SCOPED_LOCK(lock, &endpoint_identifiers, AST_RWLIST_WRLOCK, AST_RWLIST_UNLOCK); id_list_item = ast_calloc(1, sizeof(*id_list_item)); @@ -1984,67 +1976,10 @@ int ast_sip_register_endpoint_identifier(struct ast_sip_endpoint_identifier *ide } id_list_item->identifier = identifier; - ast_debug(1, "Register endpoint identifier %s (%p)\n", identifier->name, identifier); - - if (ast_strlen_zero(identifier->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; - } - - /* see if the name of the identifier is in the global endpoint_identifier_order list */ - identifier_order = prev = current = ast_sip_get_endpoint_identifier_order(); - - if (ast_strlen_zero(identifier_order)) { - AST_RWLIST_INSERT_TAIL(&endpoint_identifiers, id_list_item, list); - ast_module_ref(ast_module_info->self); - ast_free(identifier_order); - return 0; - } - - id_list_item->priority = 0; - while ((current = strchr(current, ','))) { - ++id_list_item->priority; - if (!strncmp(prev, identifier->name, current - prev)) { - break; - } - prev = ++current; - } - - if (!current) { - /* check to see if it the only or last item */ - if (!strcmp(prev, identifier->name)) { - ++id_list_item->priority; - } else { - id_list_item->priority = UINT_MAX; - } - } - - if (id_list_item->priority == UINT_MAX || AST_RWLIST_EMPTY(&endpoint_identifiers)) { - /* 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; - } - - AST_RWLIST_TRAVERSE_SAFE_BEGIN(&endpoint_identifiers, iter, list) { - if (id_list_item->priority < iter->priority) { - AST_RWLIST_INSERT_BEFORE_CURRENT(id_list_item, list); - break; - } - - if (!AST_RWLIST_NEXT(iter, list)) { - AST_RWLIST_INSERT_AFTER(&endpoint_identifiers, iter, id_list_item, list); - break; - } - } - AST_RWLIST_TRAVERSE_SAFE_END; + AST_RWLIST_INSERT_TAIL(&endpoint_identifiers, id_list_item, list); + ast_debug(1, "Registered endpoint identifier %p\n", identifier); ast_module_ref(ast_module_info->self); - ast_free(identifier_order); return 0; } @@ -2079,41 +2014,6 @@ struct ast_sip_endpoint *ast_sip_identify_endpoint(pjsip_rx_data *rdata) return endpoint; } -static char *cli_show_endpoint_identifiers(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) -{ -#define ENDPOINT_IDENTIFIER_FORMAT "%-20.20s\n" - struct endpoint_identifier_list *iter; - - switch (cmd) { - case CLI_INIT: - e->command = "pjsip show identifiers"; - e->usage = "Usage: pjsip show identifiers\n" - " List all registered endpoint identifiers\n"; - return NULL; - case CLI_GENERATE: - return NULL; - } - - if (a->argc != 3) { - return CLI_SHOWUSAGE; - } - - ast_cli(a->fd, ENDPOINT_IDENTIFIER_FORMAT, "Identifier Names:"); - { - SCOPED_LOCK(lock, &endpoint_identifiers, AST_RWLIST_RDLOCK, AST_RWLIST_UNLOCK); - AST_RWLIST_TRAVERSE(&endpoint_identifiers, iter, list) { - ast_cli(a->fd, ENDPOINT_IDENTIFIER_FORMAT, - iter->identifier->name ? iter->identifier->name : "name not specified"); - } - } - return CLI_SUCCESS; -#undef ENDPOINT_IDENTIFIER_FORMAT -} - -static struct ast_cli_entry cli_commands[] = { - AST_CLI_DEFINE(cli_show_endpoint_identifiers, "List registered endpoint identifiers") -}; - AST_RWLIST_HEAD_STATIC(endpoint_formatters, ast_sip_endpoint_formatter); void internal_sip_register_endpoint_formatter(struct ast_sip_endpoint_formatter *obj) @@ -3450,7 +3350,6 @@ static int load_module(void) } ast_res_pjsip_init_options_handling(0); - ast_cli_register_multiple(cli_commands, ARRAY_LEN(cli_commands)); return AST_MODULE_LOAD_SUCCESS; } @@ -3471,7 +3370,6 @@ static int reload_module(void) static int unload_pjsip(void *data) { - ast_cli_unregister_multiple(cli_commands, ARRAY_LEN(cli_commands)); if (memory_pool) { pj_pool_release(memory_pool); memory_pool = NULL; |