From: Matthew Jordan Date: Sat, 22 Feb 2014 19:56:23 +0000 (+0000) Subject: main: Initialize dialplan providing core components prior to module pre-load X-Git-Tag: 12.2.0-rc1~132 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=91991bbfe0e3b182466f43cdb890301a347c84a2;p=thirdparty%2Fasterisk.git 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 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@408855 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/asterisk.c b/main/asterisk.c index 63843490bc..267ad82bd4 100644 --- a/main/asterisk.c +++ b/main/asterisk.c @@ -4427,64 +4427,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); }