@ -4252,13 +4252,21 @@ int main(int argc, char *argv[])
return 0 ;
}
static inline void check_init ( int init_result , const char * name )
{
if ( init_result ) {
printf ( " %s initialization failed. \n %s " , name , term_quit ( ) ) ;
ast_run_atexits ( 0 ) ;
exit ( init_result = = - 2 ? 2 : 1 ) ;
}
}
static void asterisk_daemon ( int isroot , const char * runuser , const char * rungroup )
{
FILE * f ;
sigset_t sigs ;
int num ;
char * buf ;
int moduleresult ; /*!< Result from the module load subsystem */
char pbx_uuid [ AST_UUID_STR_LEN ] ;
/* Set time as soon as possible */
@ -4352,15 +4360,8 @@ static void asterisk_daemon(int isroot, const char *runuser, const char *rungrou
register_config_cli ( ) ;
read_config_maps ( ) ;
if ( astobj2_init ( ) ) {
printf ( " Failed: astobj2_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_named_locks_init ( ) ) {
printf ( " Failed: ast_named_locks_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
check_init ( astobj2_init ( ) , " AO2 " ) ;
check_init ( ast_named_locks_init ( ) , " Named Locks " ) ;
if ( ast_opt_console ) {
if ( el_hist = = NULL | | el = = NULL )
@ -4373,10 +4374,7 @@ static void asterisk_daemon(int isroot, const char *runuser, const char *rungrou
ast_xmldoc_load_documentation ( ) ;
# endif
if ( astdb_init ( ) ) {
printf ( " Failed: astdb_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
check_init ( astdb_init ( ) , " ASTdb " ) ;
ast_uuid_init ( ) ;
@ -4393,94 +4391,28 @@ static void asterisk_daemon(int isroot, const char *runuser, const char *rungrou
callerid_init ( ) ;
ast_builtins_init ( ) ;
if ( ast_utils_init ( ) ) {
printf ( " Failed: ast_utils_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_tps_init ( ) ) {
printf ( " Failed: ast_tps_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_fd_init ( ) ) {
printf ( " Failed: ast_fd_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_pbx_init ( ) ) {
printf ( " Failed: ast_pbx_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
check_init ( ast_utils_init ( ) , " Utilities " ) ;
check_init ( ast_tps_init ( ) , " Task Processor Core " ) ;
check_init ( ast_fd_init ( ) , " File Descriptor Debugging " ) ;
check_init ( ast_pbx_init ( ) , " ast_pbx_init " ) ;
# ifdef TEST_FRAMEWORK
if ( ast_test_init ( ) ) {
printf ( " Failed: ast_test_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
check_init ( ast_test_init ( ) , " Test Framework " ) ;
# endif
if ( ast_translate_init ( ) ) {
printf ( " Failed: ast_translate_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
check_init ( ast_translate_init ( ) , " Translator Core " ) ;
ast_aoc_cli_init ( ) ;
if ( ast_sorcery_init ( ) ) {
printf ( " Failed: ast_sorcery_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_codec_init ( ) ) {
printf ( " Failed: ast_codec_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_format_init ( ) ) {
printf ( " Failed: ast_format_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_format_cache_init ( ) ) {
printf ( " Failed: ast_format_cache_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_codec_builtin_init ( ) ) {
printf ( " Failed: ast_codec_builtin_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( aco_init ( ) ) {
printf ( " Failed: aco_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( init_logger ( ) ) { /* Start logging subsystem */
printf ( " Failed: init_logger \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_bucket_init ( ) ) {
printf ( " Failed: ast_bucket_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( stasis_init ( ) ) {
printf ( " Stasis initialization failed. \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_stasis_system_init ( ) ) {
printf ( " Stasis system-level information initialization failed. \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_endpoint_stasis_init ( ) ) {
printf ( " Endpoint initialization failed. \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
check_init ( ast_sorcery_init ( ) , " Sorcery " ) ;
check_init ( ast_codec_init ( ) , " Codecs " ) ;
check_init ( ast_format_init ( ) , " Formats " ) ;
check_init ( ast_format_cache_init ( ) , " Format Cache " ) ;
check_init ( ast_codec_builtin_init ( ) , " Built-in Codecs " ) ;
check_init ( aco_init ( ) , " Configuration Option Framework " ) ;
check_init ( init_logger ( ) , " Logger " ) ;
check_init ( ast_bucket_init ( ) , " Bucket API " ) ;
check_init ( stasis_init ( ) , " Stasis " ) ;
check_init ( ast_stasis_system_init ( ) , " Stasis system-level information " ) ;
check_init ( ast_endpoint_stasis_init ( ) , " Stasis Endpoint " ) ;
ast_makesocket ( ) ;
/* GCC 4.9 gives a bogus "right-hand operand of comma expression has
@ -4506,218 +4438,62 @@ static void asterisk_daemon(int isroot, const char *runuser, const char *rungrou
threadstorage_init ( ) ;
if ( ast_rtp_engine_init ( ) ) {
printf ( " Failed: ast_rtp_engine_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
check_init ( ast_rtp_engine_init ( ) , " RTP Engine " ) ;
ast_autoservice_init ( ) ;
if ( ast_timing_init ( ) ) {
printf ( " Failed: ast_timing_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_ssl_init ( ) ) {
printf ( " Failed: ast_ssl_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_pj_init ( ) ) {
printf ( " Failed: ast_pj_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( app_init ( ) ) {
printf ( " App core initialization failed. \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( devstate_init ( ) ) {
printf ( " Device state core initialization failed. \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_msg_init ( ) ) {
printf ( " Failed: ast_msg_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
/* initialize the data retrieval API */
if ( ast_data_init ( ) ) {
printf ( " Failed: ast_data_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_channels_init ( ) ) {
printf ( " Failed: ast_channels_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_endpoint_init ( ) ) {
printf ( " Failed: ast_endpoint_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_pickup_init ( ) ) {
printf ( " Failed: ast_pickup_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_bridging_init ( ) ) {
printf ( " Failed: ast_bridging_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_parking_stasis_init ( ) ) {
printf ( " Failed: ast_parking_stasis_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_device_state_engine_init ( ) ) {
printf ( " Failed: ast_device_state_engine_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_presence_state_engine_init ( ) ) {
printf ( " Failed: ast_presence_state_engine_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_dns_system_resolver_init ( ) ) { /* Initialize the default DNS resolver */
printf ( " Failed: ast_dns_system_resolver_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ( moduleresult = load_modules ( 1 ) ) ) { /* Load modules, pre-load only */
printf ( " Failed: load_modules \n %s " , term_quit ( ) ) ;
exit ( moduleresult = = - 2 ? 2 : 1 ) ;
}
if ( ast_features_init ( ) ) {
printf ( " Failed: ast_features_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( dnsmgr_init ( ) ) { /* Initialize the DNS manager */
printf ( " Failed: dnsmgr_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_security_stasis_init ( ) ) { /* Initialize Security Stasis Topic and Events */
printf ( " Failed: ast_security_stasis_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_named_acl_init ( ) ) { /* Initialize the Named ACL system */
printf ( " Failed: ast_named_acl_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
check_init ( ast_timing_init ( ) , " Timing " ) ;
check_init ( ast_ssl_init ( ) , " SSL " ) ;
check_init ( ast_pj_init ( ) , " Embedded PJProject " ) ;
check_init ( app_init ( ) , " App Core " ) ;
check_init ( devstate_init ( ) , " Device State Core " ) ;
check_init ( ast_msg_init ( ) , " Messaging API " ) ;
check_init ( ast_data_init ( ) , " Data Retrieval API " ) ;
check_init ( ast_channels_init ( ) , " Channel " ) ;
check_init ( ast_endpoint_init ( ) , " Endpoints " ) ;
check_init ( ast_pickup_init ( ) , " Call Pickup " ) ;
check_init ( ast_bridging_init ( ) , " Bridging " ) ;
check_init ( ast_parking_stasis_init ( ) , " Parking Core " ) ;
check_init ( ast_device_state_engine_init ( ) , " Device State Engine " ) ;
check_init ( ast_presence_state_engine_init ( ) , " Presence State Engine " ) ;
check_init ( ast_dns_system_resolver_init ( ) , " Default DNS resolver " ) ;
check_init ( load_modules ( 1 ) , " Module Preload " ) ;
check_init ( ast_features_init ( ) , " Call Features " ) ;
check_init ( dnsmgr_init ( ) , " DNS manager " ) ;
check_init ( ast_security_stasis_init ( ) , " Security Stasis Topic and Events " ) ;
check_init ( ast_named_acl_init ( ) , " Named ACL system " ) ;
ast_http_init ( ) ; /* Start the HTTP server, if needed */
if ( ast_indications_init ( ) ) {
printf ( " Failed: ast_indications_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_cdr_engine_init ( ) ) {
printf ( " Failed: ast_cdr_engine_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
check_init ( ast_indications_init ( ) , " Indication Tone Handling " ) ;
check_init ( ast_cdr_engine_init ( ) , " CDR Engine " ) ;
ast_dsp_init ( ) ;
ast_udptl_init ( ) ;
if ( ast_image_init ( ) ) {
printf ( " Failed: ast_image_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_file_init ( ) ) {
printf ( " Failed: ast_file_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( load_pbx ( ) ) {
printf ( " Failed: load_pbx \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( load_pbx_builtins ( ) ) {
printf ( " Failed: load_pbx_builtins \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( load_pbx_functions_cli ( ) ) {
printf ( " Failed: load_pbx_functions_cli \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( load_pbx_variables ( ) ) {
printf ( " Failed: load_pbx_variables \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( load_pbx_switch ( ) ) {
printf ( " Failed: load_pbx_switch \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( load_pbx_app ( ) ) {
printf ( " Failed: load_pbx_app \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( load_pbx_hangup_handler ( ) ) {
printf ( " Failed: load_pbx_hangup_handler \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_local_init ( ) ) {
printf ( " Failed: ast_local_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_cel_engine_init ( ) ) {
printf ( " Failed: ast_cel_engine_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( init_manager ( ) ) {
printf ( " Failed: init_manager \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_enum_init ( ) ) {
printf ( " Failed: ast_enum_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_cc_init ( ) ) {
printf ( " Failed: ast_cc_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ast_sounds_index_init ( ) ) {
printf ( " Failed: ast_sounds_index_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
if ( ( moduleresult = load_modules ( 0 ) ) ) { /* Load modules */
printf ( " %s " , term_quit ( ) ) ;
exit ( moduleresult = = - 2 ? 2 : 1 ) ;
}
check_init ( ast_image_init ( ) , " Image " ) ;
check_init ( ast_file_init ( ) , " Generic File Format Support " ) ;
check_init ( load_pbx ( ) , " load_pbx " ) ;
check_init ( load_pbx_builtins ( ) , " Builtin PBX Applications " ) ;
check_init ( load_pbx_functions_cli ( ) , " PBX Functions Support " ) ;
check_init ( load_pbx_variables ( ) , " PBX Variables Support " ) ;
check_init ( load_pbx_switch ( ) , " PBX Switch Support " ) ;
check_init ( load_pbx_app ( ) , " PBX Application Support " ) ;
check_init ( load_pbx_hangup_handler ( ) , " PBX Hangup Handler Support " ) ;
check_init ( ast_local_init ( ) , " Local Proxy Channel Driver " ) ;
check_init ( ast_cel_engine_init ( ) , " CEL Engine " ) ;
check_init ( init_manager ( ) , " Asterisk Manager Interface " ) ;
check_init ( ast_enum_init ( ) , " ENUM Support " ) ;
check_init ( ast_cc_init ( ) , " Call Completion Supplementary Services " ) ;
check_init ( ast_sounds_index_init ( ) , " Sounds Indexer " ) ;
check_init ( load_modules ( 0 ) , " Module " ) ;
/*
* This has to load after the dynamic modules load , as items in the media
* cache can ' t be constructed from items in the AstDB without their
* bucket backends .
*/
if ( ast_media_cache_init ( ) ) {
printf ( " Failed: ast_media_cache_init \n %s " , term_quit ( ) ) ;
exit ( 1 ) ;
}
check_init ( ast_media_cache_init ( ) , " Media Cache " ) ;
/* loads the cli_permissoins.conf file needed to implement cli restrictions. */
ast_cli_perms_init ( 0 ) ;