aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2006-08-21 22:23:26 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2006-08-21 22:23:26 +0000
commitad5b13c9823495257ea5fff5ddb6a532cd4d4b66 (patch)
treef839c0301d71a0c7c6d526281d36150ec3636eae /main
parent1a9756b81e89a7c47942adee28e705dcaf5539fc (diff)
restore 'preload' functionality in loader
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@40796 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main')
-rw-r--r--main/asterisk.c7
-rw-r--r--main/loader.c20
2 files changed, 20 insertions, 7 deletions
diff --git a/main/asterisk.c b/main/asterisk.c
index a51462752..3898ccb4a 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 518b45247..79aca11b5 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);