summaryrefslogtreecommitdiff
path: root/main/pbx.c
diff options
context:
space:
mode:
authorCorey Farrell <git@cfware.com>2016-07-21 23:34:46 -0400
committerCorey Farrell <git@cfware.com>2016-07-21 23:59:08 -0400
commit68de3a9e5176c90225db4d21734bf126d4380c05 (patch)
treeb22a6d9b4ad7574b5ed2cc40135b1f2e04d17fa0 /main/pbx.c
parent947381865918f7c560cfe69d79ab7db6f0aa4cc5 (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.c52
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);
}