Add load priority order, such that preload becomes unnecessary in most cases
authorTilghman Lesher <tilghman@meg.abyt.es>
Tue, 20 Jul 2010 19:35:02 +0000 (19:35 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Tue, 20 Jul 2010 19:35:02 +0000 (19:35 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@278132 65c4cc65-6c06-0410-ace0-fbb531ad65f3

92 files changed:
addons/chan_mobile.c
addons/res_config_mysql.c
apps/app_confbridge.c
apps/app_meetme.c
apps/app_queue.c
cdr/cdr_adaptive_odbc.c
cdr/cdr_csv.c
cdr/cdr_custom.c
cdr/cdr_manager.c
cdr/cdr_odbc.c
cdr/cdr_pgsql.c
cdr/cdr_radius.c
cdr/cdr_sqlite.c
cdr/cdr_sqlite3_custom.c
cdr/cdr_syslog.c
cdr/cdr_tds.c
cel/cel_adaptive_odbc.c
cel/cel_custom.c
cel/cel_manager.c
cel/cel_pgsql.c
cel/cel_radius.c
cel/cel_sqlite3_custom.c
cel/cel_tds.c
channels/chan_agent.c
channels/chan_alsa.c
channels/chan_bridge.c
channels/chan_console.c
channels/chan_dahdi.c
channels/chan_gtalk.c
channels/chan_h323.c
channels/chan_iax2.c
channels/chan_jingle.c
channels/chan_local.c
channels/chan_mgcp.c
channels/chan_misdn.c
channels/chan_multicast_rtp.c
channels/chan_sip.c
channels/chan_skinny.c
formats/format_g719.c
formats/format_g723.c
formats/format_g726.c
formats/format_g729.c
formats/format_gsm.c
formats/format_h263.c
formats/format_h264.c
formats/format_ilbc.c
formats/format_jpeg.c
formats/format_ogg_vorbis.c
formats/format_pcm.c
formats/format_siren14.c
formats/format_siren7.c
formats/format_sln.c
formats/format_sln16.c
formats/format_vox.c
formats/format_wav.c
formats/format_wav_gsm.c
funcs/func_curl.c
funcs/func_devstate.c
include/asterisk/config.h
include/asterisk/module.h
main/asterisk.c
main/config.c
main/loader.c
pbx/pbx_lua.c
res/res_adsi.c
res/res_agi.c
res/res_calendar.c
res/res_calendar_caldav.c
res/res_calendar_ews.c
res/res_calendar_exchange.c
res/res_calendar_icalendar.c
res/res_config_curl.c
res/res_config_ldap.c
res/res_config_odbc.c
res/res_config_pgsql.c
res/res_config_sqlite.c
res/res_crypto.c
res/res_curl.c
res/res_fax.c
res/res_jabber.c
res/res_monitor.c
res/res_musiconhold.c
res/res_odbc.c
res/res_rtp_asterisk.c
res/res_rtp_multicast.c
res/res_smdi.c
res/res_speech.c
res/res_srtp.c
res/res_timing_dahdi.c
res/res_timing_kqueue.c
res/res_timing_pthread.c
res/res_timing_timerfd.c

index 43973f4..1bceed1 100644 (file)
@@ -4584,7 +4584,8 @@ e_cleanup:
        return AST_MODULE_LOAD_FAILURE;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Bluetooth Mobile Device Channel Driver",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Bluetooth Mobile Device Channel Driver",
                .load = load_module,
                .unload = unload_module,
+               .load_pri = AST_MODPRI_CHANNEL_DRIVER,
 );
index fc449d2..e770452 100644 (file)
@@ -1773,9 +1773,10 @@ static char *handle_cli_realtime_mysql_status(struct ast_cli_entry *e, int cmd,
        return CLI_SUCCESS;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "MySQL RealTime Configuration Driver",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "MySQL RealTime Configuration Driver",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_REALTIME_DRIVER,
                );
 
index 88fc81a..daa54aa 100644 (file)
@@ -819,4 +819,8 @@ static int load_module(void)
        return AST_MODULE_LOAD_SUCCESS;
 }
 
-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Conference Bridge Application");
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Conference Bridge Application",
+       .load = load_module,
+       .unload = unload_module,
+       .load_pri = AST_MODPRI_DEVSTATE_PROVIDER,
+);
index 5ef9718..e40a91c 100644 (file)
@@ -7068,9 +7068,10 @@ static int reload(void)
        return load_config(1);
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "MeetMe conference bridge",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "MeetMe conference bridge",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_DEVSTATE_PROVIDER,
               );
 
index c1e3906..15eebdb 100644 (file)
@@ -8188,9 +8188,10 @@ static int reload(void)
        return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "True Call Queueing",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "True Call Queueing",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_DEVSTATE_CONSUMER,
               );
 
index 50577db..857ad72 100644 (file)
@@ -754,9 +754,10 @@ static int reload(void)
        return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Adaptive ODBC CDR backend",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Adaptive ODBC CDR backend",
        .load = load_module,
        .unload = unload_module,
        .reload = reload,
+       .load_pri = AST_MODPRI_CDR_DRIVER,
 );
 
index a504b6b..60b9658 100644 (file)
@@ -357,8 +357,9 @@ static int reload(void)
        return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Comma Separated Values CDR Backend",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Comma Separated Values CDR Backend",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_CDR_DRIVER,
               );
index 684c12b..c834814 100644 (file)
@@ -211,9 +211,10 @@ static int reload(void)
        return AST_MODULE_LOAD_SUCCESS;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Customizable Comma Separated Values CDR Backend",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Customizable Comma Separated Values CDR Backend",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_CDR_DRIVER,
               );
 
index e9f7284..4cc8183 100644 (file)
@@ -218,8 +218,9 @@ static int reload(void)
        return load_config(1);
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Asterisk Manager Interface CDR Backend",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Asterisk Manager Interface CDR Backend",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_CDR_DRIVER,
               );
index fde134f..e8a7ce8 100644 (file)
@@ -279,8 +279,9 @@ static int reload(void)
        return odbc_load_module(1);
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "ODBC CDR Backend",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "ODBC CDR Backend",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_CDR_DRIVER,
               );
index b248a1e..83c7d2e 100644 (file)
@@ -587,8 +587,9 @@ static int reload(void)
        return config_module(1);
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "PostgreSQL CDR Backend",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "PostgreSQL CDR Backend",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_CDR_DRIVER,
               );
index 8b611c9..c0e2c6d 100644 (file)
@@ -263,4 +263,8 @@ static int load_module(void)
        return AST_MODULE_LOAD_SUCCESS;
 }
 
-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "RADIUS CDR Backend");
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "RADIUS CDR Backend",
+               .load = load_module,
+               .unload = unload_module,
+               .load_pri = AST_MODPRI_CDR_DRIVER,
+       );
index d871e8a..a46902c 100644 (file)
@@ -238,4 +238,8 @@ err:
        return AST_MODULE_LOAD_DECLINE;
 }
 
-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "SQLite CDR Backend");
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "SQLite CDR Backend",
+       .load = load_module,
+       .unload = unload_module,
+       .load_pri = AST_MODPRI_CDR_DRIVER,
+);
index 88f5776..c2dae7a 100644 (file)
@@ -354,8 +354,9 @@ static int reload(void)
        return res;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "SQLite3 Custom CDR Module",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "SQLite3 Custom CDR Module",
        .load = load_module,
        .unload = unload_module,
        .reload = reload,
+       .load_pri = AST_MODPRI_CDR_DRIVER,
 );
index cc132cb..6d9a6df 100644 (file)
@@ -271,8 +271,9 @@ static int reload(void)
        return res ? AST_MODULE_LOAD_DECLINE : AST_MODULE_LOAD_SUCCESS;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Customizable syslog CDR Backend",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Customizable syslog CDR Backend",
        .load = load_module,
        .unload = unload_module,
        .reload = reload,
+       .load_pri = AST_MODPRI_CDR_DRIVER,
 );
index ab0f065..fca815f 100644 (file)
@@ -628,8 +628,9 @@ static int unload_module(void)
        return tds_unload_module();
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "FreeTDS CDR Backend",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "FreeTDS CDR Backend",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_CDR_DRIVER,
               );
index cb1103d..f5bd4a3 100644 (file)
@@ -783,9 +783,10 @@ static int reload(void)
        return AST_MODULE_LOAD_SUCCESS;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Adaptive ODBC CEL backend",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Adaptive ODBC CEL backend",
        .load = load_module,
        .unload = unload_module,
        .reload = reload,
+       .load_pri = AST_MODPRI_CDR_DRIVER,
 );
 
index 37a7419..9f7d589 100644 (file)
@@ -208,9 +208,10 @@ static int reload(void)
        return AST_MODULE_LOAD_SUCCESS;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Customizable Comma Separated Values CEL Backend",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Customizable Comma Separated Values CEL Backend",
        .load = load_module,
        .unload = unload_module,
        .reload = reload,
+       .load_pri = AST_MODPRI_CDR_DRIVER,
        );
 
index a57c31e..fcf2076 100644 (file)
@@ -168,8 +168,9 @@ static int reload(void)
        return load_config(1);
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Asterisk Manager Interface CEL Backend",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Asterisk Manager Interface CEL Backend",
        .load = load_module,
        .unload = unload_module,
        .reload = reload,
+       .load_pri = AST_MODPRI_CDR_DRIVER,
 );
index e4bdab1..32ec630 100644 (file)
@@ -561,8 +561,9 @@ static int reload(void)
        return my_load_module(1);
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "PostgreSQL CEL Backend",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "PostgreSQL CEL Backend",
        .load = load_module,
        .unload = unload_module,
        .reload = reload,
+       .load_pri = AST_MODPRI_CDR_DRIVER,
 );
index c44044f..0e20571 100644 (file)
@@ -251,4 +251,8 @@ static int load_module(void)
        }
 }
 
-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "RADIUS CEL Backend");
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "RADIUS CEL Backend",
+       .load = load_module,
+       .unload = unload_module,
+       .load_pri = AST_MODPRI_CDR_DRIVER,
+);
index 94765d3..18e2a9f 100644 (file)
@@ -357,8 +357,9 @@ static int reload(void)
        return res;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "SQLite3 Custom CEL Module",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "SQLite3 Custom CEL Module",
        .load = load_module,
        .unload = unload_module,
        .reload = reload,
+       .load_pri = AST_MODPRI_CDR_DRIVER,
 );
index 631c3cb..37992bf 100644 (file)
@@ -576,8 +576,9 @@ static int unload_module(void)
        return tds_unload_module();
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "FreeTDS CEL Backend",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "FreeTDS CEL Backend",
        .load = load_module,
        .unload = unload_module,
        .reload = reload,
+       .load_pri = AST_MODPRI_CDR_DRIVER,
 );
index c129005..b8e142d 100644 (file)
@@ -2479,8 +2479,9 @@ static int unload_module(void)
        return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Agent Proxy Channel",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Agent Proxy Channel",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_CHANNEL_DRIVER,
               );
index 3f8d26d..120987a 100644 (file)
@@ -1009,4 +1009,8 @@ static int unload_module(void)
        return 0;
 }
 
-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "ALSA Console Channel Driver");
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "ALSA Console Channel Driver",
+               .load = load_module,
+               .unload = unload_module,
+               .load_pri = AST_MODPRI_CHANNEL_DRIVER,
+       );
index db26466..8218bdc 100644 (file)
@@ -242,4 +242,8 @@ static int unload_module(void)
        return 0;
 }
 
-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Bridge Interaction Channel");
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Bridge Interaction Channel",
+       .load = load_module,
+       .unload = unload_module,
+       .load_pri = AST_MODPRI_CHANNEL_DRIVER,
+);
index 99b673b..13f1bba 100644 (file)
@@ -1521,8 +1521,9 @@ static int reload(void)
        return load_config(1);
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Console Channel Driver",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Console Channel Driver",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_CHANNEL_DRIVER,
 );
index 333da60..be237ea 100644 (file)
@@ -17858,8 +17858,9 @@ static int reload(void)
  * AST_MODULE_INFO(, , "DAHDI Telephony"
  */
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, tdesc,
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, tdesc,
        .load = load_module,
        .unload = unload_module,
        .reload = reload,
+       .load_pri = AST_MODPRI_CHANNEL_DRIVER,
        );
index 4101d52..47eed7e 100644 (file)
@@ -2154,8 +2154,9 @@ static int unload_module(void)
        return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Gtalk Channel Driver",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Gtalk Channel Driver",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_CHANNEL_DRIVER,
               );
index 2907b3f..2362d9a 100644 (file)
@@ -3433,8 +3433,9 @@ static int unload_module(void)
        return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "The NuFone Network's OpenH323 Channel Driver",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "The NuFone Network's OpenH323 Channel Driver",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_CHANNEL_DRIVER,
 );
index 92f070b..ad7033b 100644 (file)
@@ -14534,8 +14534,9 @@ static int load_module(void)
        return AST_MODULE_LOAD_SUCCESS;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Inter Asterisk eXchange (Ver 2)",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Inter Asterisk eXchange (Ver 2)",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_CHANNEL_DRIVER,
                );
index bdf0120..25b4d7e 100644 (file)
@@ -1966,8 +1966,9 @@ static int unload_module(void)
        return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Jingle Channel Driver",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Jingle Channel Driver",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_CHANNEL_DRIVER,
               );
index 20db5d0..95adfca 100644 (file)
@@ -1031,4 +1031,8 @@ static int unload_module(void)
        return 0;
 }
 
-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Local Proxy Channel (Note: used internally by other modules)");
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Local Proxy Channel (Note: used internally by other modules)",
+               .load = load_module,
+               .unload = unload_module,
+               .load_pri = AST_MODPRI_CHANNEL_DRIVER,
+       );
index 2f4aa4a..485b39a 100644 (file)
@@ -4910,8 +4910,9 @@ static int unload_module(void)
        return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Media Gateway Control Protocol (MGCP)",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Media Gateway Control Protocol (MGCP)",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_CHANNEL_DRIVER,
               );
index 302c854..8b31ed2 100644 (file)
@@ -12372,8 +12372,9 @@ static void chan_misdn_log(int level, int port, char *tmpl, ...)
        }
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Channel driver for mISDN Support (BRI/PRI)",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Channel driver for mISDN Support (BRI/PRI)",
        .load = load_module,
        .unload = unload_module,
        .reload = reload,
+       .load_pri = AST_MODPRI_CHANNEL_DRIVER,
 );
index f385d44..e3414d2 100644 (file)
@@ -184,4 +184,8 @@ static int unload_module(void)
        return 0;
 }
 
-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Multicast RTP Paging Channel");
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Multicast RTP Paging Channel",
+       .load = load_module,
+       .unload = unload_module,
+       .load_pri = AST_MODPRI_CHANNEL_DRIVER,
+);
index 7970cbc..e2db51a 100644 (file)
@@ -28505,8 +28505,9 @@ static int unload_module(void)
        return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Session Initiation Protocol (SIP)",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Session Initiation Protocol (SIP)",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_CHANNEL_DRIVER,
               );
index 6d4968a..4edbc4a 100644 (file)
@@ -7488,8 +7488,9 @@ static int reload(void)
        return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Skinny Client Control Protocol (Skinny)",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Skinny Client Control Protocol (Skinny)",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_CHANNEL_DRIVER,
 );
index 779bea9..6a981d1 100644 (file)
@@ -133,11 +133,7 @@ static int load_module(void)
 static int unload_module(void)
 {
        return ast_format_unregister(g719_f.name);
-}      
+}
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER,"ITU G.719",
-       .load = load_module,
-       .unload = unload_module,
-       .load_pri = 10,
-);
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "ITU G.719");
 
index 46f22f1..3d48f26 100644 (file)
@@ -147,10 +147,6 @@ static int load_module(void)
 static int unload_module(void)
 {
        return ast_format_unregister(g723_1_f.name);
-}      
+}
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "G.723.1 Simple Timestamp File Format",
-       .load = load_module,
-       .unload = unload_module,
-       .load_pri = 10,
-);
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "G.723.1 Simple Timestamp File Format");
index d519fa4..53e344c 100644 (file)
@@ -256,10 +256,6 @@ static int unload_module(void)
                        ast_log(LOG_WARNING, "Failed to unregister format %s.\n", f[i].name);
        }
        return(0);
-}      
+}
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Raw G.726 (16/24/32/40kbps) data",
-       .load = load_module,
-       .unload = unload_module,
-       .load_pri = 10,
-);
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Raw G.726 (16/24/32/40kbps) data");
index 19be7a4..439f8a6 100644 (file)
@@ -143,10 +143,6 @@ static int load_module(void)
 static int unload_module(void)
 {
        return ast_format_unregister(g729_f.name);
-}      
+}
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Raw G729 data",
-       .load = load_module,
-       .unload = unload_module,
-       .load_pri = 10,
-);
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Raw G729 data");
index f1ba9fb..06d1d94 100644 (file)
@@ -167,10 +167,6 @@ static int load_module(void)
 static int unload_module(void)
 {
        return ast_format_unregister(gsm_f.name);
-}      
+}
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Raw GSM data",
-       .load = load_module,
-       .unload = unload_module,
-       .load_pri = 10,
-);
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Raw GSM data");
index 02b7f79..6e95c7a 100644 (file)
@@ -181,10 +181,6 @@ static int load_module(void)
 static int unload_module(void)
 {
        return ast_format_unregister(h263_f.name);
-}      
+}
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Raw H.263 data",
-       .load = load_module,
-       .unload = unload_module,
-       .load_pri = 10,
-);
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Raw H.263 data");
index 1573475..0a5ba94 100644 (file)
@@ -170,10 +170,6 @@ static int load_module(void)
 static int unload_module(void)
 {
        return ast_format_unregister(h264_f.name);
-}      
+}
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Raw H.264 data",
-       .load = load_module,
-       .unload = unload_module,
-       .load_pri = 10,
-);
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Raw H.264 data");
index d01c74f..d2fa8a1 100644 (file)
@@ -141,10 +141,6 @@ static int load_module(void)
 static int unload_module(void)
 {
        return ast_format_unregister(ilbc_f.name);
-}      
+}
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Raw iLBC data",
-       .load = load_module,
-       .unload = unload_module,
-       .load_pri = 10,
-);
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Raw iLBC data");
index 54a2422..169ffbb 100644 (file)
@@ -110,10 +110,6 @@ static int unload_module(void)
        ast_image_unregister(&jpeg_format);
 
        return 0;
-}      
+}
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "jpeg (joint picture experts group) image format",
-       .load = load_module,
-       .unload = unload_module,
-       .load_pri = 10,
-);
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "jpeg (joint picture experts group) image format");
index 928b001..d45511a 100644 (file)
@@ -556,8 +556,4 @@ static int unload_module(void)
        return ast_format_unregister(vorbis_f.name);
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "OGG/Vorbis audio",
-       .load = load_module,
-       .unload = unload_module,
-       .load_pri = 10,
-);
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "OGG/Vorbis audio");
index b272b26..2b0db56 100644 (file)
@@ -492,10 +492,6 @@ static int unload_module(void)
                || ast_format_unregister(alaw_f.name)
                || ast_format_unregister(au_f.name)
                || ast_format_unregister(g722_f.name);
-}      
+}
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Raw/Sun uLaw/ALaw 8KHz (PCM,PCMA,AU), G.722 16Khz",
-       .load = load_module,
-       .unload = unload_module,
-       .load_pri = 10,
-);
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Raw/Sun uLaw/ALaw 8KHz (PCM,PCMA,AU), G.722 16Khz");
index 215450f..498317c 100644 (file)
@@ -133,10 +133,6 @@ static int load_module(void)
 static int unload_module(void)
 {
        return ast_format_unregister(siren14_f.name);
-}      
+}
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "ITU G.722.1 Annex C (Siren14, licensed from Polycom)",
-       .load = load_module,
-       .unload = unload_module,
-       .load_pri = 10,
-);
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "ITU G.722.1 Annex C (Siren14, licensed from Polycom)");
index a2871fc..6017207 100644 (file)
@@ -133,10 +133,6 @@ static int load_module(void)
 static int unload_module(void)
 {
        return ast_format_unregister(siren7_f.name);
-}      
+}
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "ITU G.722.1 (Siren7, licensed from Polycom)",
-       .load = load_module,
-       .unload = unload_module,
-       .load_pri = 10,
-);
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "ITU G.722.1 (Siren7, licensed from Polycom)");
index 11b150d..538f77f 100644 (file)
@@ -125,10 +125,6 @@ static int load_module(void)
 static int unload_module(void)
 {
        return ast_format_unregister(slin_f.name);
-}      
+}
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Raw Signed Linear Audio support (SLN)",
-       .load = load_module,
-       .unload = unload_module,
-       .load_pri = 10,
-);
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Raw Signed Linear Audio support (SLN)");
index 3f9a736..5e73fc9 100644 (file)
@@ -133,10 +133,6 @@ static int load_module(void)
 static int unload_module(void)
 {
        return ast_format_unregister(slin_f.name);
-}      
+}
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Raw Signed Linear 16KHz Audio support (SLN16)",
-       .load = load_module,
-       .unload = unload_module,
-       .load_pri = 10,
-);
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Raw Signed Linear 16KHz Audio support (SLN16)");
index db9e646..1501375 100644 (file)
@@ -130,10 +130,6 @@ static int load_module(void)
 static int unload_module(void)
 {
        return ast_format_unregister(vox_f.name);
-}      
+}
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Dialogic VOX (ADPCM) File Format",
-       .load = load_module,
-       .unload = unload_module,
-       .load_pri = 10,
-);
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Dialogic VOX (ADPCM) File Format");
index 6cd4c54..050df73 100644 (file)
@@ -493,10 +493,6 @@ static int load_module(void)
 static int unload_module(void)
 {
        return ast_format_unregister(wav_f.name);
-}      
+}
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Microsoft WAV format (8000Hz Signed Linear)",
-       .load = load_module,
-       .unload = unload_module,
-       .load_pri = 10,
-);
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Microsoft WAV format (8000Hz Signed Linear)");
index 0b93b6e..106d88c 100644 (file)
@@ -546,10 +546,6 @@ static int load_module(void)
 static int unload_module(void)
 {
        return ast_format_unregister(wav49_f.name);
-}      
+}
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Microsoft WAV format (Proprietary GSM)",
-       .load = load_module,
-       .unload = unload_module,
-       .load_pri = 10,
-);
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Microsoft WAV format (Proprietary GSM)");
index e7c5b65..92d0b97 100644 (file)
@@ -638,5 +638,9 @@ static int load_module(void)
        return res;
 }
 
-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Load external URL");
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Load external URL",
+               .load = load_module,
+               .unload = unload_module,
+               .load_pri = AST_MODPRI_REALTIME_DEPEND2,
+       );
 
index 6e4a674..3966577 100644 (file)
@@ -349,4 +349,8 @@ static int load_module(void)
        return res;
 }
 
-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Gets or sets a device state in the dialplan");
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Gets or sets a device state in the dialplan",
+       .load = load_module,
+       .unload = unload_module,
+       .load_pri = AST_MODPRI_DEVSTATE_PROVIDER,
+);
index c5f7973..f7279f1 100644 (file)
@@ -43,6 +43,8 @@ enum {
        CONFIG_FLAG_FILEUNCHANGED = (1 << 1),
        /*! Don't attempt to cache mtime on this config file. */
        CONFIG_FLAG_NOCACHE       = (1 << 2),
+       /*! Don't attempt to load from realtime (typically called from a realtime driver dependency) */
+       CONFIG_FLAG_NOREALTIME    = (1 << 3),
 };
 
 #define        CONFIG_STATUS_FILEMISSING       (void *)0
index 0beed8d..24f66fc 100644 (file)
@@ -193,6 +193,20 @@ enum ast_module_flags {
        AST_MODFLAG_LOAD_ORDER = (1 << 1),
 };
 
+enum ast_module_load_priority {
+       AST_MODPRI_REALTIME_DEPEND =    10,  /*!< Dependency for a realtime driver */
+       AST_MODPRI_REALTIME_DEPEND2 =   20,  /*!< Second level dependency for a realtime driver (func_curl needs res_curl, but is needed by res_config_curl) */
+       AST_MODPRI_REALTIME_DRIVER =    30,  /*!< A realtime driver, which provides configuration services for other modules */
+       AST_MODPRI_CHANNEL_DEPEND =     50,  /*!< Channel driver dependency (may depend upon realtime, e.g. MOH) */
+       AST_MODPRI_CHANNEL_DRIVER =     60,  /*!< Channel drivers (provide devicestate) */
+       AST_MODPRI_APP_DEPEND =         70,  /*!< Dependency for an application */
+       AST_MODPRI_DEVSTATE_PROVIDER =  80,  /*!< Applications and other modules that _provide_ devicestate (e.g. meetme) */
+       AST_MODPRI_DEVSTATE_PLUGIN =    90,  /*!< Plugin for a module that provides devstate (e.g. res_calendar_*) */
+       AST_MODPRI_CDR_DRIVER =        100,  /*!< CDR or CEL backend */
+       AST_MODPRI_DEFAULT =           128,  /*!< Modules not otherwise defined (such as most apps) will load here */
+       AST_MODPRI_DEVSTATE_CONSUMER = 150,  /*!< Certain modules, which consume devstate, need to load after all others (e.g. app_queue) */
+};
+
 struct ast_module_info {
 
        /*!
@@ -245,7 +259,7 @@ struct ast_module *ast_module_ref(struct ast_module *);
 void ast_module_unref(struct ast_module *);
 
 #if defined(__cplusplus) || defined(c_plusplus)
-#define AST_MODULE_INFO(keystr, flags_to_set, desc, load_func, unload_func, reload_func)       \
+#define AST_MODULE_INFO(keystr, flags_to_set, desc, load_func, unload_func, reload_func, load_pri)     \
        static struct ast_module_info __mod_info = {    \
                NULL,                                   \
                load_func,                              \
@@ -258,6 +272,7 @@ void ast_module_unref(struct ast_module *);
                keystr,                                 \
                flags_to_set,                           \
                AST_BUILDOPT_SUM,                       \
+               load_pri,           \
        };                                              \
        static void  __attribute__((constructor)) __reg_module(void) \
        { \
@@ -270,10 +285,11 @@ void ast_module_unref(struct ast_module *);
        static const __attribute__((unused)) struct ast_module_info *ast_module_info = &__mod_info
 
 #define AST_MODULE_INFO_STANDARD(keystr, desc)         \
-       AST_MODULE_INFO(keystr, AST_MODFLAG_DEFAULT, desc,      \
+       AST_MODULE_INFO(keystr, AST_MODFLAG_LOAD_ORDER, desc,   \
                        load_module,                    \
                        unload_module,          \
-                       NULL                    \
+                       NULL,                   \
+                       AST_MODPRI_DEFAULT \
                       )
 #else /* plain C */
 
@@ -364,9 +380,10 @@ static void __restore_globals(void)
        static const struct ast_module_info *ast_module_info = &__mod_info
 
 #define AST_MODULE_INFO_STANDARD(keystr, desc)         \
-       AST_MODULE_INFO(keystr, AST_MODFLAG_DEFAULT, desc,      \
+       AST_MODULE_INFO(keystr, AST_MODFLAG_LOAD_ORDER, desc,   \
                        .load = load_module,                    \
                        .unload = unload_module,                \
+                       .load_pri = AST_MODPRI_DEFAULT, \
                       )
 #endif /* plain C */
 
index 0fd1711..e82223d 100644 (file)
@@ -2826,7 +2826,7 @@ static void ast_readconfig(void)
        struct ast_variable *v;
        char *config = DEFAULT_CONFIG_FILE;
        char hostname[MAXHOSTNAMELEN] = "";
-       struct ast_flags config_flags = { 0 };
+       struct ast_flags config_flags = { CONFIG_FLAG_NOREALTIME };
        struct {
                unsigned int dbdir:1;
                unsigned int keydir:1;
index f65c69e..1ed46b7 100644 (file)
@@ -1896,7 +1896,7 @@ int read_config_maps(void)
        struct ast_config *config, *configtmp;
        struct ast_variable *v;
        char *driver, *table, *database, *stringp, *tmp;
-       struct ast_flags flags = { 0 };
+       struct ast_flags flags = { CONFIG_FLAG_NOREALTIME };
 
        clear_config_maps();
 
@@ -2060,7 +2060,7 @@ struct ast_config *ast_config_internal_load(const char *filename, struct ast_con
 
        cfg->include_level++;
 
-       if (strcmp(filename, extconfig_conf) && strcmp(filename, "asterisk.conf") && config_engine_list) {
+       if (!ast_test_flag(&flags, CONFIG_FLAG_NOREALTIME) && config_engine_list) {
                struct ast_config_engine *eng;
 
                eng = find_engine(filename, db, sizeof(db), table, sizeof(table));
index 0249af9..17bb1f8 100644 (file)
@@ -899,9 +899,9 @@ static int mod_load_cmp(void *a, void *b)
        struct ast_module *a_mod = (struct ast_module *) a;
        struct ast_module *b_mod = (struct ast_module *) b;
        int res = -1;
-       /* if load_pri is not set, default is 255.  Lower is better*/
-       unsigned char a_pri = ast_test_flag(a_mod->info, AST_MODFLAG_LOAD_ORDER) ? a_mod->info->load_pri : 255;
-       unsigned char b_pri = ast_test_flag(b_mod->info, AST_MODFLAG_LOAD_ORDER) ? b_mod->info->load_pri : 255;
+       /* if load_pri is not set, default is 128.  Lower is better*/
+       unsigned char a_pri = ast_test_flag(a_mod->info, AST_MODFLAG_LOAD_ORDER) ? a_mod->info->load_pri : 128;
+       unsigned char b_pri = ast_test_flag(b_mod->info, AST_MODFLAG_LOAD_ORDER) ? b_mod->info->load_pri : 128;
        if (a_pri == b_pri) {
                res = 0;
        } else if (a_pri < b_pri) {
index e292117..c37dba6 100644 (file)
@@ -84,7 +84,7 @@ static void lua_create_application_metatable(lua_State *L);
 static void lua_create_autoservice_functions(lua_State *L);
 static void lua_create_hangup_function(lua_State *L);
 
-void lua_state_destroy(void *data);
+static void lua_state_destroy(void *data);
 static lua_State *lua_get_state(struct ast_channel *chan);
 
 static int exists(struct ast_channel *chan, const char *context, const char *exten, int priority, const char *callerid, const char *data);
@@ -108,7 +108,7 @@ static const struct ast_datastore_info lua_datastore = {
 /*!
  * \brief The destructor for lua_datastore
  */
-void lua_state_destroy(void *data)
+static void lua_state_destroy(void *data)
 {
        if (data)
                lua_close(data);
@@ -1467,7 +1467,7 @@ static int load_module(void)
        return AST_MODULE_LOAD_SUCCESS;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "Lua PBX Switch",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Lua PBX Switch",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
index b7e8327..226105d 100644 (file)
@@ -1141,8 +1141,9 @@ static int unload_module(void)
        return -1;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "ADSI Resource",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER, "ADSI Resource",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_APP_DEPEND,
               );
index bd8ad4b..8d5fd81 100644 (file)
@@ -3848,7 +3848,8 @@ static int load_module(void)
        return ast_register_application_xml(app, agi_exec);
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "Asterisk Gateway Interface (AGI)",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER, "Asterisk Gateway Interface (AGI)",
                .load = load_module,
                .unload = unload_module,
+               .load_pri = AST_MODPRI_APP_DEPEND,
                );
index 2e3c8e4..2de9959 100644 (file)
@@ -1693,8 +1693,9 @@ static int load_module(void)
 
        return AST_MODULE_LOAD_SUCCESS;
 }
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "Asterisk Calendar integration",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER, "Asterisk Calendar integration",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_DEVSTATE_PROVIDER,
        );
index 583b4b1..664f25b 100644 (file)
@@ -690,7 +690,8 @@ static int unload_module(void)
        return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Asterisk CalDAV Calendar Integration",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Asterisk CalDAV Calendar Integration",
                .load = load_module,
                .unload = unload_module,
+               .load_pri = AST_MODPRI_DEVSTATE_PLUGIN,
        );
index ea06b7a..931e368 100644 (file)
@@ -832,7 +832,8 @@ static int unload_module(void)
        return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Asterisk MS Exchange Web Service Calendar Integration",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Asterisk MS Exchange Web Service Calendar Integration",
        .load = load_module,
        .unload = unload_module,
+       .load_pri = AST_MODPRI_DEVSTATE_PLUGIN,
 );
index 59e44c5..b1707c5 100644 (file)
@@ -753,7 +753,8 @@ static int unload_module(void)
        return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Asterisk MS Exchange Calendar Integration",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Asterisk MS Exchange Calendar Integration",
                .load = load_module,
                .unload = unload_module,
+               .load_pri = AST_MODPRI_DEVSTATE_PLUGIN,
        );
index 34a8b10..2eda352 100644 (file)
@@ -481,7 +481,8 @@ static int unload_module(void)
        return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Asterisk iCalendar .ics file integration",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Asterisk iCalendar .ics file integration",
                .load = load_module,
                .unload = unload_module,
+               .load_pri = AST_MODPRI_DEVSTATE_PLUGIN,
        );
index 95b1589..0ff6694 100644 (file)
@@ -608,6 +608,38 @@ static struct ast_config_engine curl_engine = {
        .require_func = require_curl,
 };
 
+static int reload_module(void)
+{
+       struct ast_flags flags = { CONFIG_FLAG_NOREALTIME };
+       struct ast_config *cfg;
+       struct ast_variable *var;
+
+       if (!(cfg = ast_config_load("res_curl.conf", flags))) {
+               return 0;
+       } else if (cfg == CONFIG_STATUS_FILEINVALID) {
+               ast_log(LOG_WARNING, "res_curl.conf could not be parsed!\n");
+               return 0;
+       }
+
+       if (!(var = ast_variable_browse(cfg, "globals")) && !(var = ast_variable_browse(cfg, "global")) && !(var = ast_variable_browse(cfg, "general"))) {
+               ast_log(LOG_WARNING, "[globals] not found in res_curl.conf\n");
+               ast_config_destroy(cfg);
+               return 0;
+       }
+
+       for (; var; var = var->next) {
+               if (strncmp(var->name, "CURLOPT(", 8)) {
+                       char name[256];
+                       snprintf(name, sizeof(name), "CURLOPT(%s)", var->name);
+                       pbx_builtin_setvar_helper(NULL, name, var->value);
+               } else {
+                       pbx_builtin_setvar_helper(NULL, var->name, var->value);
+               }
+       }
+       ast_config_destroy(cfg);
+       return 0;
+}
+
 static int unload_module(void)
 {
        ast_config_engine_deregister(&curl_engine);
@@ -624,9 +656,23 @@ static int load_module(void)
                }
        }
 
+       if (!ast_module_check("func_curl.so")) {
+               if (ast_load_resource("func_curl.so") != AST_MODULE_LOAD_SUCCESS) {
+                       ast_log(LOG_ERROR, "Cannot load func_curl, so res_config_curl cannot be loaded\n");
+                       return AST_MODULE_LOAD_DECLINE;
+               }
+       }
+
+       reload_module();
+
        ast_config_engine_register(&curl_engine);
        ast_verb(1, "res_config_curl loaded.\n");
        return 0;
 }
 
-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Realtime Curl configuration");
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Realtime Curl configuration",
+               .load = load_module,
+               .unload = unload_module,
+               .reload = reload_module,
+               .load_pri = AST_MODPRI_REALTIME_DRIVER,
+       );
index 8496d80..77ad842 100644 (file)
@@ -1778,8 +1778,9 @@ static char *realtime_ldap_status(struct ast_cli_entry *e, int cmd, struct ast_c
        return CLI_SUCCESS;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "LDAP realtime interface",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "LDAP realtime interface",
        .load = load_module,
        .unload = unload_module,
        .reload = reload,
+       .load_pri = AST_MODPRI_REALTIME_DRIVER,
 );
index f06ab25..7498723 100644 (file)
@@ -1146,8 +1146,9 @@ static int reload_module(void)
        return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Realtime ODBC configuration",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Realtime ODBC configuration",
                .load = load_module,
                .unload = unload_module,
                .reload = reload_module,
+               .load_pri = AST_MODPRI_REALTIME_DRIVER,
                );
index 3bed287..14a98a3 100644 (file)
@@ -1599,8 +1599,9 @@ static char *handle_cli_realtime_pgsql_status(struct ast_cli_entry *e, int cmd,
 }
 
 /* needs usecount semantics defined */
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "PostgreSQL RealTime Configuration Driver",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "PostgreSQL RealTime Configuration Driver",
                .load = load_module,
                .unload = unload_module,
-               .reload = reload
+               .reload = reload,
+               .load_pri = AST_MODPRI_REALTIME_DRIVER,
               );
index 2007a81..744a07b 100644 (file)
@@ -1866,7 +1866,8 @@ static int load_module(void)
        return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Realtime SQLite configuration",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Realtime SQLite configuration",
                .load = load_module,
                .unload = unload_module,
+               .load_pri = AST_MODPRI_REALTIME_DRIVER,
 );
index 06feefd..cb87eee 100644 (file)
@@ -637,8 +637,9 @@ static int unload_module(void)
 }
 
 /* needs usecount semantics defined */
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "Cryptographic Digital Signatures",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER, "Cryptographic Digital Signatures",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_CHANNEL_DEPEND, /*!< Since we don't have a config file, we could move up to REALTIME_DEPEND, if necessary */
        );
index d2783ca..411c06e 100644 (file)
@@ -65,9 +65,13 @@ static int load_module(void)
        if (curl_global_init(CURL_GLOBAL_ALL)) {
                ast_log(LOG_ERROR, "Unable to initialize the CURL library. Cannot load res_curl\n");
                return AST_MODULE_LOAD_DECLINE;
-       }       
+       }
 
        return res;
 }
 
-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "cURL Resource Module");
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "cURL Resource Module",
+               .load = load_module,
+               .unload = unload_module,
+               .load_pri = AST_MODPRI_REALTIME_DEPEND,
+       );
index 159eec7..8695414 100644 (file)
@@ -2478,7 +2478,8 @@ static int load_module(void)
 }
 
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "Generic FAX Applications",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER, "Generic FAX Applications",
                .load = load_module,
                .unload = unload_module,
+               .load_pri = AST_MODPRI_APP_DEPEND,
               );
index ecded13..5238441 100644 (file)
@@ -4729,8 +4729,9 @@ static int reload(void)
        return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "AJI - Asterisk Jabber Interface",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER, "AJI - Asterisk Jabber Interface",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_CHANNEL_DEPEND,
               );
index febdab4..d508da1 100644 (file)
@@ -930,7 +930,8 @@ static int unload_module(void)
 }
 
 /* usecount semantics need to be defined */
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "Call Monitoring Resource",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER, "Call Monitoring Resource",
                .load = load_module,
                .unload = unload_module,
+               .load_pri = AST_MODPRI_CHANNEL_DEPEND,
                );
index 5650ddc..2361b22 100644 (file)
@@ -1905,8 +1905,9 @@ static int unload_module(void)
        return res;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Music On Hold Resource",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Music On Hold Resource",
        .load = load_module,
        .unload = unload_module,
        .reload = reload,
+       .load_pri = AST_MODPRI_CHANNEL_DEPEND,
 );
index ed7aa98..ec1591c 100644 (file)
@@ -1784,8 +1784,9 @@ static int load_module(void)
        return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "ODBC resource",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER, "ODBC resource",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_REALTIME_DEPEND,
               );
index 28f75c8..09c5e6b 100644 (file)
@@ -2775,8 +2775,9 @@ static int unload_module(void)
        return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Asterisk RTP Stack",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Asterisk RTP Stack",
                .load = load_module,
                .unload = unload_module,
                .reload = reload_module,
+               .load_pri = AST_MODPRI_CHANNEL_DEPEND,
                );
index 19d21bc..56a8cd2 100644 (file)
@@ -268,4 +268,8 @@ static int unload_module(void)
        return 0;
 }
 
-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Multicast RTP Engine");
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Multicast RTP Engine",
+       .load = load_module,
+       .unload = unload_module,
+       .load_pri = AST_MODPRI_CHANNEL_DEPEND,
+);
index fe99cc9..19b049f 100644 (file)
@@ -1471,8 +1471,9 @@ static int reload(void)
                return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "Simplified Message Desk Interface (SMDI) Resource",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER, "Simplified Message Desk Interface (SMDI) Resource",
                .load = load_module,
                .unload = unload_module,
                .reload = reload,
+               .load_pri = AST_MODPRI_CHANNEL_DEPEND,
               );
index 3f5f960..46a846f 100644 (file)
@@ -339,7 +339,8 @@ static int load_module(void)
        return AST_MODULE_LOAD_SUCCESS;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "Generic Speech Recognition API",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER, "Generic Speech Recognition API",
                .load = load_module,
                .unload = unload_module,
+               .load_pri = AST_MODPRI_APP_DEPEND,
                );
index 8b753ff..546f073 100644 (file)
@@ -397,7 +397,8 @@ static int unload_module(void)
        return 0;
 }
 
-AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS, "Secure RTP (SRTP)",
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER, "Secure RTP (SRTP)",
        .load = load_module,
        .unload = unload_module,
+       .load_pri = AST_MODPRI_CHANNEL_DEPEND,
 );
index f8235db..8a23828 100644 (file)
@@ -202,5 +202,5 @@ static int unload_module(void)
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "DAHDI Timing Interface",
                .load = load_module,
                .unload = unload_module,
-               .load_pri = 10,
+               .load_pri = AST_MODPRI_CHANNEL_DEPEND,
                );
index 757fc52..1fef5fb 100644 (file)
@@ -390,5 +390,5 @@ static int unload_module(void)
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "KQueue Timing Interface",
                .load = load_module,
                .unload = unload_module,
-               .load_pri = 10,
+               .load_pri = AST_MODPRI_CHANNEL_DEPEND,
                );
index 53ceeb5..d63b39d 100644 (file)
@@ -524,5 +524,5 @@ static int unload_module(void)
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "pthread Timing Interface",
                .load = load_module,
                .unload = unload_module,
-               .load_pri = 10,
+               .load_pri = AST_MODPRI_CHANNEL_DEPEND,
                );
index 12bb493..bffa007 100644 (file)
@@ -299,5 +299,5 @@ static int unload_module(void)
 AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER, "Timerfd Timing Interface",
                .load = load_module,
                .unload = unload_module,
-               .load_pri = 10,
+               .load_pri = AST_MODPRI_CHANNEL_DEPEND,
                );