diff options
author | Jenkins2 <jenkins2@gerrit.asterisk.org> | 2017-12-07 12:43:44 -0600 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.digium.api> | 2017-12-07 12:43:44 -0600 |
commit | 9bf73ae1b37768240dfd509a2fd39b2fa82fa397 (patch) | |
tree | 7f27d18defe3b05ab70c03a517f04595b568143b /main | |
parent | 58addb1e38d9078406b2abc7a2fabfa393e27537 (diff) | |
parent | db6602f6f7d7d60a92526f12bf82a8c4f4eb0af4 (diff) |
Merge "sounds_index: Avoid repeatedly reindexing." into 13
Diffstat (limited to 'main')
-rw-r--r-- | main/asterisk.c | 7 | ||||
-rw-r--r-- | main/sounds_index.c | 9 |
2 files changed, 11 insertions, 5 deletions
diff --git a/main/asterisk.c b/main/asterisk.c index 0abb3600d..3807b0af7 100644 --- a/main/asterisk.c +++ b/main/asterisk.c @@ -4701,9 +4701,14 @@ static void asterisk_daemon(int isroot, const char *runuser, const char *rungrou check_init(init_manager(), "Asterisk Manager Interface"); check_init(ast_enum_init(), "ENUM Support"); check_init(ast_cc_init(), "Call Completion Supplementary Services"); - check_init(ast_sounds_index_init(), "Sounds Indexer"); check_init(load_modules(0), "Module"); + /* + * This is initialized after the dynamic modules load to avoid repeatedly + * reindexing sounds for every format module load. + */ + check_init(ast_sounds_index_init(), "Sounds Indexer"); + /* loads the cli_permissoins.conf file needed to implement cli restrictions. */ ast_cli_perms_init(0); diff --git a/main/sounds_index.c b/main/sounds_index.c index c7f9f4dd9..c792c1bbd 100644 --- a/main/sounds_index.c +++ b/main/sounds_index.c @@ -285,13 +285,15 @@ static void sounds_cleanup(void) static void format_update_cb(void *data, struct stasis_subscription *sub, struct stasis_message *message) { - ast_sounds_reindex(); + /* Reindexing during shutdown is pointless. */ + if (!ast_shutting_down()) { + ast_sounds_reindex(); + } } int ast_sounds_index_init(void) { int res = 0; - sounds_index = NULL; if (ast_sounds_reindex()) { return -1; } @@ -328,6 +330,5 @@ int ast_sounds_index_init(void) struct ast_media_index *ast_sounds_get_index(void) { - ao2_ref(sounds_index, +1); - return sounds_index; + return ao2_bump(sounds_index); } |