summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorMatthew Jordan <mjordan@digium.com>2014-02-22 23:31:10 +0000
committerMatthew Jordan <mjordan@digium.com>2014-02-22 23:31:10 +0000
commit31707b1d69228b1f0f3585fa30f46336b94c2b9a (patch)
treec369bc5611de2e78fe64eab1f3720c81191fa92c /main
parent11ac08296bec97ae75050f7e46c82ae4358a44bb (diff)
main: Initialize dialplan providing core components prior to module pre-load
It is possible to pre-load pbx_config. As a result, pbx_config - which will load and parse the dialplan - will attempt to use various dialplan components, such as device state providers and presence state providers, prior to them being initialized by the core. This would lead to a crash, as the components had not created their Stasis cache entries. This patch moves a number of core component initializations before the module pre-load. This guarantees that if someone does pre-load pbx_config - or other pbx modules - that the Stasis caches for the various core components are created. (closes issue ASTERISK-23320) Reported by: xrobau (closes issue ASTERISK-23265) Reported by: Andrew Nagy Tested by: Andrew Nagy, Rusty Newton ........ Merged revisions 408855 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@408859 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main')
-rw-r--r--main/asterisk.c32
1 files changed, 16 insertions, 16 deletions
diff --git a/main/asterisk.c b/main/asterisk.c
index e2e01a51f..04af9740c 100644
--- a/main/asterisk.c
+++ b/main/asterisk.c
@@ -4426,64 +4426,64 @@ int main(int argc, char *argv[])
exit(1);
}
- if ((moduleresult = load_modules(1))) { /* Load modules, pre-load only */
+ if (ast_features_init()) {
printf("%s", term_quit());
- exit(moduleresult == -2 ? 2 : 1);
+ exit(1);
}
- if (dnsmgr_init()) { /* Initialize the DNS manager */
+ if (ast_pickup_init()) {
printf("%s", term_quit());
exit(1);
}
- if (ast_security_stasis_init()) { /* Initialize Security Stasis Topic and Events */
+ if (ast_bridging_init()) {
printf("%s", term_quit());
exit(1);
}
- if (ast_named_acl_init()) { /* Initialize the Named ACL system */
+ if (ast_parking_stasis_init()) {
printf("%s", term_quit());
exit(1);
}
- ast_http_init(); /* Start the HTTP server, if needed */
-
- if (ast_indications_init()) {
+ if (ast_device_state_engine_init()) {
printf("%s", term_quit());
exit(1);
}
- if (ast_features_init()) {
+ if (ast_presence_state_engine_init()) {
printf("%s", term_quit());
exit(1);
}
- if (ast_pickup_init()) {
+ if ((moduleresult = load_modules(1))) { /* Load modules, pre-load only */
printf("%s", term_quit());
- exit(1);
+ exit(moduleresult == -2 ? 2 : 1);
}
- if (ast_bridging_init()) {
+ if (dnsmgr_init()) { /* Initialize the DNS manager */
printf("%s", term_quit());
exit(1);
}
- if (ast_parking_stasis_init()) {
+ if (ast_security_stasis_init()) { /* Initialize Security Stasis Topic and Events */
printf("%s", term_quit());
exit(1);
}
- if (ast_cdr_engine_init()) {
+ if (ast_named_acl_init()) { /* Initialize the Named ACL system */
printf("%s", term_quit());
exit(1);
}
- if (ast_device_state_engine_init()) {
+ ast_http_init(); /* Start the HTTP server, if needed */
+
+ if (ast_indications_init()) {
printf("%s", term_quit());
exit(1);
}
- if (ast_presence_state_engine_init()) {
+ if (ast_cdr_engine_init()) {
printf("%s", term_quit());
exit(1);
}