From 26fa2291384a21c9515440150a0ab9af165cccbb Mon Sep 17 00:00:00 2001 From: "Kevin P. Fleming" <kpfleming@digium.com> Date: Mon, 21 Aug 2006 22:23:26 +0000 Subject: [PATCH] restore 'preload' functionality in loader git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@40796 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- include/asterisk.h | 2 +- main/asterisk.c | 7 ++++++- main/loader.c | 20 ++++++++++++++------ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/include/asterisk.h b/include/asterisk.h index 7858230e66..1ed3d322d8 100644 --- a/include/asterisk.h +++ b/include/asterisk.h @@ -51,7 +51,7 @@ extern char ast_config_AST_CTL[PATH_MAX]; extern char ast_config_AST_SYSTEM_NAME[20]; int ast_set_priority(int); /*!< Provided by asterisk.c */ -int load_modules(void); /*!< Provided by loader.c */ +int load_modules(unsigned int); /*!< Provided by loader.c */ int load_pbx(void); /*!< Provided by pbx.c */ int init_logger(void); /*!< Provided by logger.c */ void close_logger(void); /*!< Provided by logger.c */ diff --git a/main/asterisk.c b/main/asterisk.c index a514627529..3898ccb4a2 100644 --- a/main/asterisk.c +++ b/main/asterisk.c @@ -2615,7 +2615,7 @@ int main(int argc, char *argv[]) printf(term_quit()); exit(1); } - if (load_modules()) { + if (load_modules(1)) { printf(term_quit()); exit(1); } @@ -2678,6 +2678,11 @@ int main(int argc, char *argv[]) exit(1); } + if (load_modules(0)) { + printf(term_quit()); + exit(1); + } + dnsmgr_start_refresh(); /* We might have the option of showing a console, but for now just diff --git a/main/loader.c b/main/loader.c index 518b45247b..79aca11b56 100644 --- a/main/loader.c +++ b/main/loader.c @@ -667,7 +667,7 @@ static struct load_order_entry *add_to_load_order(const char *resource, struct l return order; } -int load_modules(void) +int load_modules(unsigned int preload_only) { struct ast_config *cfg; struct ast_module *mod; @@ -699,14 +699,22 @@ int load_modules(void) AST_LIST_HEAD_INIT_NOLOCK(&load_order); - /* first, find all the modules we have been explicitly requested to load */ - for (v = ast_variable_browse(cfg, "modules"); v; v = v->next) { - if (!strcasecmp(v->name, "load")) - add_to_load_order(v->value, &load_order); + if (preload_only) { + /* first, find all the modules we have been explicitly requested to load */ + for (v = ast_variable_browse(cfg, "modules"); v; v = v->next) { + if (!strcasecmp(v->name, "preload")) + add_to_load_order(v->value, &load_order); + } + } else { + /* first, find all the modules we have been explicitly requested to load */ + for (v = ast_variable_browse(cfg, "modules"); v; v = v->next) { + if (!strcasecmp(v->name, "load")) + add_to_load_order(v->value, &load_order); + } } /* check if 'autoload' is on */ - if (ast_true(ast_variable_retrieve(cfg, "modules", "autoload"))) { + if (!preload_only && ast_true(ast_variable_retrieve(cfg, "modules", "autoload"))) { /* if so, first add all the embedded modules to the load order */ AST_LIST_TRAVERSE(&module_list, mod, entry) { order = add_to_load_order(mod->resource, &load_order); -- GitLab