restore 'preload' functionality in loader
authorKevin P. Fleming <kpfleming@digium.com>
Mon, 21 Aug 2006 22:23:26 +0000 (22:23 +0000)
committerKevin P. Fleming <kpfleming@digium.com>
Mon, 21 Aug 2006 22:23:26 +0000 (22:23 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@40796 65c4cc65-6c06-0410-ace0-fbb531ad65f3

include/asterisk.h
main/asterisk.c
main/loader.c

index 7858230..1ed3d32 100644 (file)
@@ -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 */
index a514627..3898ccb 100644 (file)
@@ -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
index 518b452..79aca11 100644 (file)
@@ -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);