Author: coreyfarrell Date: Thu Mar 26 17:16:31 2015 New Revision: 433495 URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=433495 Log: Replace most uses of ast_register_atexit with ast_register_cleanup.
Since 'core stop now' and 'core restart now' do not stop modules, it is unsafe for most of the core to run cleanups. Originally all cleanups used ast_register_atexit, and were only changed when it was shown to be unsafe. ast_register_atexit is now used only when absolutely required to prevent corruption and close child processes. Exceptions that need to use ast_register_atexit: * CDR: Flush records. * res_musiconhold: Kill external applications. * AstDB: Close the DB. * canary_exit: Kill canary process. ASTERISK-24142 #close Reported by: David Brillert ASTERISK-24683 #close Reported by: Peter Katzmann ASTERISK-24805 #close Reported by: Badalian Vyacheslav ASTERISK-24881 #close Reported by: Corey Farrell Review: https://reviewboard.asterisk.org/r/4500/ Review: https://reviewboard.asterisk.org/r/4501/ Modified: branches/11/include/asterisk.h branches/11/main/aoc.c branches/11/main/asterisk.c branches/11/main/astfd.c branches/11/main/astmm.c branches/11/main/astobj2.c branches/11/main/ccss.c branches/11/main/cel.c branches/11/main/channel.c branches/11/main/cli.c branches/11/main/config.c branches/11/main/data.c branches/11/main/dnsmgr.c branches/11/main/event.c branches/11/main/features.c branches/11/main/file.c branches/11/main/format.c branches/11/main/http.c branches/11/main/image.c branches/11/main/indications.c branches/11/main/manager.c branches/11/main/message.c branches/11/main/named_acl.c branches/11/main/pbx.c branches/11/main/stun.c branches/11/main/taskprocessor.c branches/11/main/test.c branches/11/main/threadstorage.c branches/11/main/timing.c branches/11/main/translate.c branches/11/main/udptl.c branches/11/main/utils.c branches/11/main/xmldoc.c Modified: branches/11/include/asterisk.h URL: http://svnview.digium.com/svn/asterisk/branches/11/include/asterisk.h?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/include/asterisk.h (original) +++ branches/11/include/asterisk.h Thu Mar 26 17:16:31 2015 @@ -86,6 +86,11 @@ * * \retval 0 on success. * \retval -1 on error. + * + * \note This function should be rarely used in situations where + * something must be shutdown to avoid corruption, excessive data + * loss, or when external programs must be stopped. All other + * cleanup in the core should use ast_register_cleanup. */ int ast_register_atexit(void (*func)(void)); Modified: branches/11/main/aoc.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/aoc.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/aoc.c (original) +++ branches/11/main/aoc.c Thu Mar 26 17:16:31 2015 @@ -1611,6 +1611,6 @@ } int ast_aoc_cli_init(void) { - ast_register_atexit(aoc_shutdown); + ast_register_cleanup(aoc_shutdown); return ast_cli_register_multiple(aoc_cli, ARRAY_LEN(aoc_cli)); } Modified: branches/11/main/asterisk.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/asterisk.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/asterisk.c (original) +++ branches/11/main/asterisk.c Thu Mar 26 17:16:31 2015 @@ -4374,7 +4374,7 @@ ast_lastreloadtime = ast_startuptime = ast_tvnow(); ast_cli_register_multiple(cli_asterisk_shutdown, ARRAY_LEN(cli_asterisk_shutdown)); ast_cli_register_multiple(cli_asterisk, ARRAY_LEN(cli_asterisk)); - ast_register_atexit(main_atexit); + ast_register_cleanup(main_atexit); run_startup_commands(); Modified: branches/11/main/astfd.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/astfd.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/astfd.c (original) +++ branches/11/main/astfd.c Thu Mar 26 17:16:31 2015 @@ -281,7 +281,7 @@ int ast_fd_init(void) { - ast_register_atexit(fd_shutdown); + ast_register_cleanup(fd_shutdown); return ast_cli_register(&cli_show_fd); } Modified: branches/11/main/astmm.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/astmm.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/astmm.c (original) +++ branches/11/main/astmm.c Thu Mar 26 17:16:31 2015 @@ -1429,7 +1429,7 @@ ast_log(LOG_ERROR, "Could not open malloc debug log file: %s\n", filename); } - ast_register_atexit(mm_atexit_ast); + ast_register_cleanup(mm_atexit_ast); } #endif /* defined(__AST_DEBUG_MALLOC) */ Modified: branches/11/main/astobj2.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/astobj2.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/astobj2.c (original) +++ branches/11/main/astobj2.c Thu Mar 26 17:16:31 2015 @@ -1748,7 +1748,7 @@ ast_cli_register_multiple(cli_astobj2, ARRAY_LEN(cli_astobj2)); #endif - ast_register_atexit(astobj2_cleanup); + ast_register_cleanup(astobj2_cleanup); return 0; } Modified: branches/11/main/ccss.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/ccss.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/ccss.c (original) +++ branches/11/main/ccss.c Thu Mar 26 17:16:31 2015 @@ -4583,7 +4583,7 @@ initialize_cc_devstate_map(); res |= ast_devstate_prov_add("ccss", ccss_device_state); - ast_register_atexit(cc_shutdown); + ast_register_cleanup(cc_shutdown); return res; } Modified: branches/11/main/cel.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/cel.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/cel.c (original) +++ branches/11/main/cel.c Thu Mar 26 17:16:31 2015 @@ -892,7 +892,7 @@ return -1; } - ast_register_atexit(ast_cel_engine_term); + ast_register_cleanup(ast_cel_engine_term); return 0; } Modified: branches/11/main/channel.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/channel.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/channel.c (original) +++ branches/11/main/channel.c Thu Mar 26 17:16:31 2015 @@ -8666,7 +8666,7 @@ ast_plc_reload(); - ast_register_atexit(channels_shutdown); + ast_register_cleanup(channels_shutdown); } /*! \brief Print call group and pickup group ---*/ Modified: branches/11/main/cli.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/cli.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/cli.c (original) +++ branches/11/main/cli.c Thu Mar 26 17:16:31 2015 @@ -2000,7 +2000,7 @@ void ast_builtins_init(void) { ast_cli_register_multiple(cli_cli, ARRAY_LEN(cli_cli)); - ast_register_atexit(cli_shutdown); + ast_register_cleanup(cli_shutdown); } /*! Modified: branches/11/main/config.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/config.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/config.c (original) +++ branches/11/main/config.c Thu Mar 26 17:16:31 2015 @@ -3368,7 +3368,7 @@ int register_config_cli(void) { ast_cli_register_multiple(cli_config, ARRAY_LEN(cli_config)); - ast_register_atexit(config_shutdown); + ast_register_cleanup(config_shutdown); return 0; } Modified: branches/11/main/data.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/data.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/data.c (original) +++ branches/11/main/data.c Thu Mar 26 17:16:31 2015 @@ -3343,7 +3343,7 @@ AST_TEST_REGISTER(test_data_get); - ast_register_atexit(data_shutdown); + ast_register_cleanup(data_shutdown); return res; } Modified: branches/11/main/dnsmgr.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/dnsmgr.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/dnsmgr.c (original) +++ branches/11/main/dnsmgr.c Thu Mar 26 17:16:31 2015 @@ -427,7 +427,7 @@ ast_cli_register(&cli_status); ast_cli_register(&cli_refresh); - ast_register_atexit(dnsmgr_shutdown); + ast_register_cleanup(dnsmgr_shutdown); return do_reload(1); } Modified: branches/11/main/event.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/event.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/event.c (original) +++ branches/11/main/event.c Thu Mar 26 17:16:31 2015 @@ -1882,7 +1882,7 @@ ast_cli_register_multiple(event_cli, ARRAY_LEN(event_cli)); - ast_register_atexit(event_shutdown); + ast_register_cleanup(event_shutdown); return 0; Modified: branches/11/main/features.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/features.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/features.c (original) +++ branches/11/main/features.c Thu Mar 26 17:16:31 2015 @@ -9108,7 +9108,7 @@ res |= AST_TEST_REGISTER(features_test); #endif /* defined(TEST_FRAMEWORK) */ - ast_register_atexit(features_shutdown); + ast_register_cleanup(features_shutdown); return res; } Modified: branches/11/main/file.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/file.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/file.c (original) +++ branches/11/main/file.c Thu Mar 26 17:16:31 2015 @@ -1594,6 +1594,6 @@ int ast_file_init(void) { ast_cli_register_multiple(cli_file, ARRAY_LEN(cli_file)); - ast_register_atexit(file_shutdown); + ast_register_cleanup(file_shutdown); return 0; } Modified: branches/11/main/format.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/format.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/format.c (original) +++ branches/11/main/format.c Thu Mar 26 17:16:31 2015 @@ -1113,7 +1113,7 @@ goto init_list_cleanup; } - ast_register_atexit(format_list_shutdown); + ast_register_cleanup(format_list_shutdown); return 0; init_list_cleanup: Modified: branches/11/main/http.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/http.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/http.c (original) +++ branches/11/main/http.c Thu Mar 26 17:16:31 2015 @@ -1312,7 +1312,7 @@ ast_http_uri_link(&statusuri); ast_http_uri_link(&staticuri); ast_cli_register_multiple(cli_http, ARRAY_LEN(cli_http)); - ast_register_atexit(http_shutdown); + ast_register_cleanup(http_shutdown); return __ast_http_load(0); } Modified: branches/11/main/image.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/image.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/image.c (original) +++ branches/11/main/image.c Thu Mar 26 17:16:31 2015 @@ -214,6 +214,6 @@ int ast_image_init(void) { ast_cli_register_multiple(cli_image, ARRAY_LEN(cli_image)); - ast_register_atexit(image_shutdown); + ast_register_cleanup(image_shutdown); return 0; } Modified: branches/11/main/indications.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/indications.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/indications.c (original) +++ branches/11/main/indications.c Thu Mar 26 17:16:31 2015 @@ -1184,7 +1184,7 @@ ast_cli_register_multiple(cli_indications, ARRAY_LEN(cli_indications)); - ast_register_atexit(indications_shutdown); + ast_register_cleanup(indications_shutdown); return 0; } Modified: branches/11/main/manager.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/manager.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/manager.c (original) +++ branches/11/main/manager.c Thu Mar 26 17:16:31 2015 @@ -7635,7 +7635,7 @@ struct ao2_container *temp_event_docs; #endif - ast_register_atexit(manager_shutdown); + ast_register_cleanup(manager_shutdown); /* Register default actions */ ast_manager_register_xml_core("Ping", 0, action_ping); Modified: branches/11/main/message.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/message.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/message.c (original) +++ branches/11/main/message.c Thu Mar 26 17:16:31 2015 @@ -1379,7 +1379,7 @@ res |= ast_register_application2(app_msg_send, msg_send_exec, NULL, NULL, NULL); res |= ast_manager_register_xml_core("MessageSend", EVENT_FLAG_MESSAGE, action_messagesend); - ast_register_atexit(message_shutdown); + ast_register_cleanup(message_shutdown); return res; } Modified: branches/11/main/named_acl.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/named_acl.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/named_acl.c (original) +++ branches/11/main/named_acl.c Thu Mar 26 17:16:31 2015 @@ -567,7 +567,7 @@ { ast_cli_register_multiple(cli_named_acl, ARRAY_LEN(cli_named_acl)); - ast_register_atexit(named_acl_cleanup); + ast_register_cleanup(named_acl_cleanup); if (aco_info_init(&cfg_info)) { return 0; Modified: branches/11/main/pbx.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/pbx.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/pbx.c (original) +++ branches/11/main/pbx.c Thu Mar 26 17:16:31 2015 @@ -12054,7 +12054,7 @@ { int x; - ast_register_atexit(unload_pbx); + ast_register_cleanup(unload_pbx); /* Initialize the PBX */ ast_verb(1, "Asterisk PBX Core Initializing\n"); @@ -12480,7 +12480,7 @@ hintdevices = ao2_container_alloc(HASH_EXTENHINT_SIZE, hintdevice_hash_cb, hintdevice_cmp_multiple); statecbs = ao2_container_alloc(1, NULL, statecbs_cmp); - ast_register_atexit(pbx_shutdown); + ast_register_cleanup(pbx_shutdown); return (hints && hintdevices && statecbs) ? 0 : -1; } Modified: branches/11/main/stun.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/stun.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/stun.c (original) +++ branches/11/main/stun.c Thu Mar 26 17:16:31 2015 @@ -516,5 +516,5 @@ void ast_stun_init(void) { ast_cli_register_multiple(cli_stun, sizeof(cli_stun) / sizeof(struct ast_cli_entry)); - ast_register_atexit(stun_shutdown); -} + ast_register_cleanup(stun_shutdown); +} Modified: branches/11/main/taskprocessor.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/taskprocessor.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/taskprocessor.c (original) +++ branches/11/main/taskprocessor.c Thu Mar 26 17:16:31 2015 @@ -145,7 +145,7 @@ ast_cli_register_multiple(taskprocessor_clis, ARRAY_LEN(taskprocessor_clis)); - ast_register_atexit(tps_shutdown); + ast_register_cleanup(tps_shutdown); return 0; } Modified: branches/11/main/test.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/test.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/test.c (original) +++ branches/11/main/test.c Thu Mar 26 17:16:31 2015 @@ -943,7 +943,7 @@ #ifdef TEST_FRAMEWORK /* Register cli commands */ ast_cli_register_multiple(test_cli, ARRAY_LEN(test_cli)); - ast_register_atexit(test_shutdown); + ast_register_cleanup(test_shutdown); #endif return 0; Modified: branches/11/main/threadstorage.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/threadstorage.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/threadstorage.c (original) +++ branches/11/main/threadstorage.c Thu Mar 26 17:16:31 2015 @@ -258,7 +258,7 @@ { pthread_mutex_init(&threadstoragelock, NULL); ast_cli_register_multiple(cli, ARRAY_LEN(cli)); - ast_register_atexit(threadstorage_shutdown); + ast_register_cleanup(threadstorage_shutdown); } #endif /* !defined(DEBUG_THREADLOCALS) */ Modified: branches/11/main/timing.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/timing.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/timing.c (original) +++ branches/11/main/timing.c Thu Mar 26 17:16:31 2015 @@ -313,7 +313,7 @@ return -1; } - ast_register_atexit(timing_shutdown); + ast_register_cleanup(timing_shutdown); return ast_cli_register_multiple(cli_timing, ARRAY_LEN(cli_timing)); } Modified: branches/11/main/translate.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/translate.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/translate.c (original) +++ branches/11/main/translate.c Thu Mar 26 17:16:31 2015 @@ -1420,6 +1420,6 @@ ast_rwlock_init(&tablelock); res = matrix_resize(1); res |= ast_cli_register_multiple(cli_translate, ARRAY_LEN(cli_translate)); - ast_register_atexit(translate_shutdown); + ast_register_cleanup(translate_shutdown); return res; } Modified: branches/11/main/udptl.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/udptl.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/udptl.c (original) +++ branches/11/main/udptl.c Thu Mar 26 17:16:31 2015 @@ -1524,5 +1524,5 @@ ast_cli_register_multiple(cli_udptl, ARRAY_LEN(cli_udptl)); - ast_register_atexit(udptl_shutdown); -} + ast_register_cleanup(udptl_shutdown); +} Modified: branches/11/main/utils.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/utils.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/utils.c (original) +++ branches/11/main/utils.c Thu Mar 26 17:16:31 2015 @@ -2285,7 +2285,7 @@ ast_cli_register_multiple(utils_cli, ARRAY_LEN(utils_cli)); #endif #endif - ast_register_atexit(utils_shutdown); + ast_register_cleanup(utils_shutdown); return 0; } Modified: branches/11/main/xmldoc.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/xmldoc.c?view=diff&rev=433495&r1=433494&r2=433495 ============================================================================== --- branches/11/main/xmldoc.c (original) +++ branches/11/main/xmldoc.c Thu Mar 26 17:16:31 2015 @@ -2396,7 +2396,7 @@ ast_xml_init(); /* register function to be run when asterisk finish. */ - ast_register_atexit(xmldoc_unload_documentation); + ast_register_cleanup(xmldoc_unload_documentation); globbuf.gl_offs = 0; /* slots to reserve in gl_pathv */ -- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- svn-commits mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/svn-commits