From b4e18d5660fcc13b97cd4682ff48e33aa9d15d83 Mon Sep 17 00:00:00 2001 From: Tilghman Lesher Date: Tue, 20 Jul 2010 19:35:02 +0000 Subject: Add load priority order, such that preload becomes unnecessary in most cases git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@278132 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- res/res_adsi.c | 3 ++- res/res_agi.c | 3 ++- res/res_calendar.c | 3 ++- res/res_calendar_caldav.c | 3 ++- res/res_calendar_ews.c | 3 ++- res/res_calendar_exchange.c | 3 ++- res/res_calendar_icalendar.c | 3 ++- res/res_config_curl.c | 48 +++++++++++++++++++++++++++++++++++++++++++- res/res_config_ldap.c | 3 ++- res/res_config_odbc.c | 3 ++- res/res_config_pgsql.c | 5 +++-- res/res_config_sqlite.c | 3 ++- res/res_crypto.c | 3 ++- res/res_curl.c | 8 ++++++-- res/res_fax.c | 3 ++- res/res_jabber.c | 3 ++- res/res_monitor.c | 3 ++- res/res_musiconhold.c | 3 ++- res/res_odbc.c | 3 ++- res/res_rtp_asterisk.c | 3 ++- res/res_rtp_multicast.c | 6 +++++- res/res_smdi.c | 3 ++- res/res_speech.c | 3 ++- res/res_srtp.c | 3 ++- res/res_timing_dahdi.c | 2 +- res/res_timing_kqueue.c | 2 +- res/res_timing_pthread.c | 2 +- res/res_timing_timerfd.c | 2 +- 28 files changed, 105 insertions(+), 30 deletions(-) (limited to 'res') diff --git a/res/res_adsi.c b/res/res_adsi.c index b7e832750..226105d87 100644 --- a/res/res_adsi.c +++ b/res/res_adsi.c @@ -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, ); diff --git a/res/res_agi.c b/res/res_agi.c index bd8ad4bfd..8d5fd812a 100644 --- a/res/res_agi.c +++ b/res/res_agi.c @@ -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, ); diff --git a/res/res_calendar.c b/res/res_calendar.c index 2e3c8e4a1..2de995933 100644 --- a/res/res_calendar.c +++ b/res/res_calendar.c @@ -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, ); diff --git a/res/res_calendar_caldav.c b/res/res_calendar_caldav.c index 583b4b1de..664f25b87 100644 --- a/res/res_calendar_caldav.c +++ b/res/res_calendar_caldav.c @@ -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, ); diff --git a/res/res_calendar_ews.c b/res/res_calendar_ews.c index ea06b7a8d..931e36854 100644 --- a/res/res_calendar_ews.c +++ b/res/res_calendar_ews.c @@ -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, ); diff --git a/res/res_calendar_exchange.c b/res/res_calendar_exchange.c index 59e44c511..b1707c5e2 100644 --- a/res/res_calendar_exchange.c +++ b/res/res_calendar_exchange.c @@ -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, ); diff --git a/res/res_calendar_icalendar.c b/res/res_calendar_icalendar.c index 34a8b101b..2eda35245 100644 --- a/res/res_calendar_icalendar.c +++ b/res/res_calendar_icalendar.c @@ -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, ); diff --git a/res/res_config_curl.c b/res/res_config_curl.c index 95b1589e2..0ff6694dc 100644 --- a/res/res_config_curl.c +++ b/res/res_config_curl.c @@ -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, + ); diff --git a/res/res_config_ldap.c b/res/res_config_ldap.c index 8496d801a..77ad8422b 100644 --- a/res/res_config_ldap.c +++ b/res/res_config_ldap.c @@ -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, ); diff --git a/res/res_config_odbc.c b/res/res_config_odbc.c index f06ab25c2..749872303 100644 --- a/res/res_config_odbc.c +++ b/res/res_config_odbc.c @@ -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, ); diff --git a/res/res_config_pgsql.c b/res/res_config_pgsql.c index 3bed287e6..14a98a3b2 100644 --- a/res/res_config_pgsql.c +++ b/res/res_config_pgsql.c @@ -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, ); diff --git a/res/res_config_sqlite.c b/res/res_config_sqlite.c index 2007a81f6..744a07bac 100644 --- a/res/res_config_sqlite.c +++ b/res/res_config_sqlite.c @@ -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, ); diff --git a/res/res_crypto.c b/res/res_crypto.c index 06feefd07..cb87eeec3 100644 --- a/res/res_crypto.c +++ b/res/res_crypto.c @@ -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 */ ); diff --git a/res/res_curl.c b/res/res_curl.c index d2783ca10..411c06e11 100644 --- a/res/res_curl.c +++ b/res/res_curl.c @@ -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, + ); diff --git a/res/res_fax.c b/res/res_fax.c index 159eec7cd..8695414ea 100644 --- a/res/res_fax.c +++ b/res/res_fax.c @@ -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, ); diff --git a/res/res_jabber.c b/res/res_jabber.c index ecded1332..5238441f1 100644 --- a/res/res_jabber.c +++ b/res/res_jabber.c @@ -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, ); diff --git a/res/res_monitor.c b/res/res_monitor.c index febdab4a6..d508da13a 100644 --- a/res/res_monitor.c +++ b/res/res_monitor.c @@ -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, ); diff --git a/res/res_musiconhold.c b/res/res_musiconhold.c index 5650ddc4d..2361b2280 100644 --- a/res/res_musiconhold.c +++ b/res/res_musiconhold.c @@ -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, ); diff --git a/res/res_odbc.c b/res/res_odbc.c index ed7aa986d..ec1591c00 100644 --- a/res/res_odbc.c +++ b/res/res_odbc.c @@ -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, ); diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c index 28f75c8b1..09c5e6ba4 100644 --- a/res/res_rtp_asterisk.c +++ b/res/res_rtp_asterisk.c @@ -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, ); diff --git a/res/res_rtp_multicast.c b/res/res_rtp_multicast.c index 19d21bcfb..56a8cd23c 100644 --- a/res/res_rtp_multicast.c +++ b/res/res_rtp_multicast.c @@ -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, +); diff --git a/res/res_smdi.c b/res/res_smdi.c index fe99cc9ea..19b049f17 100644 --- a/res/res_smdi.c +++ b/res/res_smdi.c @@ -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, ); diff --git a/res/res_speech.c b/res/res_speech.c index 3f5f96048..46a846f03 100644 --- a/res/res_speech.c +++ b/res/res_speech.c @@ -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, ); diff --git a/res/res_srtp.c b/res/res_srtp.c index 8b753ff87..546f0733d 100644 --- a/res/res_srtp.c +++ b/res/res_srtp.c @@ -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, ); diff --git a/res/res_timing_dahdi.c b/res/res_timing_dahdi.c index f8235db63..8a2382834 100644 --- a/res/res_timing_dahdi.c +++ b/res/res_timing_dahdi.c @@ -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, ); diff --git a/res/res_timing_kqueue.c b/res/res_timing_kqueue.c index 757fc528b..1fef5fb99 100644 --- a/res/res_timing_kqueue.c +++ b/res/res_timing_kqueue.c @@ -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, ); diff --git a/res/res_timing_pthread.c b/res/res_timing_pthread.c index 53ceeb5de..d63b39d1f 100644 --- a/res/res_timing_pthread.c +++ b/res/res_timing_pthread.c @@ -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, ); diff --git a/res/res_timing_timerfd.c b/res/res_timing_timerfd.c index 12bb493dc..bffa007de 100644 --- a/res/res_timing_timerfd.c +++ b/res/res_timing_timerfd.c @@ -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, ); -- cgit v1.2.3