core: Tweak startup order.
authorCorey Farrell <git@cfware.com>
Mon, 1 Jan 2018 21:59:57 +0000 (16:59 -0500)
committerCorey Farrell <git@cfware.com>
Fri, 26 Jan 2018 01:23:31 +0000 (20:23 -0500)
Move initialization of units which do not require configuration to occur
before preload modules.  This leaves only units which load config between
module preload and regular load stages.

Change-Id: I1d15384acad16a22c3498124421af474fa517478

main/asterisk.c

index 4c7abd6..39c97d2 100644 (file)
@@ -4546,20 +4546,7 @@ static void asterisk_daemon(int isroot, const char *runuser, const char *rungrou
        check_init(ast_device_state_engine_init(), "Device State Engine");
        check_init(ast_presence_state_engine_init(), "Presence State Engine");
        check_init(ast_dns_system_resolver_init(), "Default DNS resolver");
-       check_init(load_modules(1), "Module Preload");
-       check_init(ast_features_init(), "Call Features");
-       check_init(dnsmgr_init(), "DNS manager");
        check_init(ast_security_stasis_init(), "Security Stasis Topic and Events");
-       check_init(ast_named_acl_init(), "Named ACL system");
-
-       ast_http_init();                /* Start the HTTP server, if needed */
-
-       check_init(ast_indications_init(), "Indication Tone Handling");
-       check_init(ast_cdr_engine_init(), "CDR Engine");
-
-       ast_dsp_init();
-       ast_udptl_init();
-
        check_init(ast_image_init(), "Image");
        check_init(ast_file_init(), "Generic File Format Support");
        check_init(load_pbx(), "load_pbx");
@@ -4570,10 +4557,27 @@ static void asterisk_daemon(int isroot, const char *runuser, const char *rungrou
        check_init(load_pbx_app(), "PBX Application Support");
        check_init(load_pbx_hangup_handler(), "PBX Hangup Handler Support");
        check_init(ast_local_init(), "Local Proxy Channel Driver");
+
+       /* We should avoid most config loads before this point as they can't use realtime. */
+       check_init(load_modules(1), "Module Preload");
+
+       /* Initialize core modules that have config files.  These should be converted to
+        * built-in modules with load priority after realtime, that way users will not
+        * need to 'preload' realtime modules. */
+       check_init(ast_features_init(), "Call Features");
+       check_init(dnsmgr_init(), "DNS manager");
+       check_init(ast_named_acl_init(), "Named ACL system");
+       ast_http_init();
+       check_init(ast_indications_init(), "Indication Tone Handling");
+       check_init(ast_cdr_engine_init(), "CDR Engine");
+       ast_dsp_init();
+       ast_udptl_init();
        check_init(ast_cel_engine_init(), "CEL Engine");
        check_init(init_manager(), "Asterisk Manager Interface");
        check_init(ast_enum_init(), "ENUM Support");
        check_init(ast_cc_init(), "Call Completion Supplementary Services");
+
+       /* Load remaining modules */
        check_init(load_modules(0), "Module");
 
        /*