diff options
author | Corey Farrell <git@cfware.com> | 2016-07-21 23:34:46 -0400 |
---|---|---|
committer | Corey Farrell <git@cfware.com> | 2016-07-21 23:59:08 -0400 |
commit | 68de3a9e5176c90225db4d21734bf126d4380c05 (patch) | |
tree | b22a6d9b4ad7574b5ed2cc40135b1f2e04d17fa0 /main/pbx.c | |
parent | 947381865918f7c560cfe69d79ab7db6f0aa4cc5 (diff) |
pbx.c: Remove duplicate code.
Merge code found in both branches of a conditional in
ast_add_extension2_lockopt.
The updated code initializes peer_table and peer_label_table of the
extension before linking it to the context.
Change-Id: Ic759e27cdc9906c6877df41d28ee9c5be8f41c20
Diffstat (limited to 'main/pbx.c')
-rw-r--r-- | main/pbx.c | 52 |
1 files changed, 19 insertions, 33 deletions
diff --git a/main/pbx.c b/main/pbx.c index f9fad0388..4d6d31ec4 100644 --- a/main/pbx.c +++ b/main/pbx.c @@ -7278,52 +7278,38 @@ static int ast_add_extension2_lockopt(struct ast_context *con, * so insert in the main list right before 'e' (if any) */ tmp->next = e; - if (el) { /* there is another exten already in this context */ - el->next = tmp; - tmp->peer_table = ast_hashtab_create(13, - hashtab_compare_exten_numbers, + tmp->peer_table = ast_hashtab_create(13, + hashtab_compare_exten_numbers, + ast_hashtab_resize_java, + ast_hashtab_newsize_java, + hashtab_hash_priority, + 0); + tmp->peer_label_table = ast_hashtab_create(7, + hashtab_compare_exten_labels, ast_hashtab_resize_java, ast_hashtab_newsize_java, - hashtab_hash_priority, + hashtab_hash_labels, 0); - tmp->peer_label_table = ast_hashtab_create(7, - hashtab_compare_exten_labels, - ast_hashtab_resize_java, - ast_hashtab_newsize_java, - hashtab_hash_labels, - 0); - if (label) { - ast_hashtab_insert_safe(tmp->peer_label_table, tmp); - } - ast_hashtab_insert_safe(tmp->peer_table, tmp); + + if (el) { /* there is another exten already in this context */ + el->next = tmp; } else { /* this is the first exten in this context */ - if (!con->root_table) + if (!con->root_table) { con->root_table = ast_hashtab_create(27, hashtab_compare_extens, ast_hashtab_resize_java, ast_hashtab_newsize_java, hashtab_hash_extens, 0); - con->root = tmp; - con->root->peer_table = ast_hashtab_create(13, - hashtab_compare_exten_numbers, - ast_hashtab_resize_java, - ast_hashtab_newsize_java, - hashtab_hash_priority, - 0); - con->root->peer_label_table = ast_hashtab_create(7, - hashtab_compare_exten_labels, - ast_hashtab_resize_java, - ast_hashtab_newsize_java, - hashtab_hash_labels, - 0); - if (label) { - ast_hashtab_insert_safe(con->root->peer_label_table, tmp); } - ast_hashtab_insert_safe(con->root->peer_table, tmp); - + con->root = tmp; + } + if (label) { + ast_hashtab_insert_safe(tmp->peer_label_table, tmp); } + ast_hashtab_insert_safe(tmp->peer_table, tmp); ast_hashtab_insert_safe(con->root_table, tmp); + if (lock_context) { ast_unlock_context(con); } |