]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-10801: [Core] Use right order when loading core modules.
authorAndrey Volk <andywolk@gmail.com>
Thu, 28 Feb 2019 08:45:58 +0000 (12:45 +0400)
committerAndrey Volk <andywolk@gmail.com>
Mon, 15 Jul 2019 18:20:35 +0000 (22:20 +0400)
src/switch_loadable_module.c

index dfd8f310a9c8c71d6c1d0d5e08fa8bb96c04e264..491bf16583b131da9dbcbe2a173b845239947f40 100644 (file)
@@ -2178,15 +2178,19 @@ SWITCH_DECLARE(switch_status_t) switch_loadable_module_init(switch_bool_t autolo
        */
        switch_core_hash_init(&event_hash);
 
+       /* 
+               Pre-load core modules.
+               Do not pre-load modules which may use databases,
+               use appropriate section.
+       */
        switch_loadable_module_load_module_ex("", "CORE_SOFTTIMER_MODULE", SWITCH_FALSE, SWITCH_FALSE, &err, SWITCH_LOADABLE_MODULE_TYPE_COMMON, event_hash);
        switch_loadable_module_load_module_ex("", "CORE_PCM_MODULE", SWITCH_FALSE, SWITCH_FALSE, &err, SWITCH_LOADABLE_MODULE_TYPE_COMMON, event_hash);
        switch_loadable_module_load_module_ex("", "CORE_SPEEX_MODULE", SWITCH_FALSE, SWITCH_FALSE, &err, SWITCH_LOADABLE_MODULE_TYPE_COMMON, event_hash);
-#ifdef SWITCH_HAVE_YUV
-#ifdef SWITCH_HAVE_VPX
-       switch_loadable_module_load_module_ex("", "CORE_VPX_MODULE", SWITCH_FALSE, SWITCH_FALSE, &err, SWITCH_LOADABLE_MODULE_TYPE_COMMON, event_hash);
-#endif
-#endif
 
+       /*
+               Loading pre-load modules.
+               Database modules must be loaded here.
+       */
        if ((xml = switch_xml_open_cfg(precf, &cfg, NULL))) {
                switch_xml_t mods, ld;
                if ((mods = switch_xml_child(cfg, "modules"))) {
@@ -2252,6 +2256,18 @@ SWITCH_DECLARE(switch_status_t) switch_loadable_module_init(switch_bool_t autolo
 
        switch_core_hash_destroy(&event_hash);
 
+       /*
+               To perevent locking.
+               Core modules which may use databases should be pre-loaded here
+               (databases are loaded already).
+       */
+#ifdef SWITCH_HAVE_YUV
+#ifdef SWITCH_HAVE_VPX
+       switch_loadable_module_load_module_ex("", "CORE_VPX_MODULE", SWITCH_FALSE, SWITCH_FALSE, &err, SWITCH_LOADABLE_MODULE_TYPE_COMMON, event_hash);
+#endif
+#endif
+
+       /* Loading common modules */
        if ((xml = switch_xml_open_cfg(cf, &cfg, NULL))) {
                switch_xml_t mods, ld;
                if ((mods = switch_xml_child(cfg, "modules"))) {