mirror of
https://github.com/asterisk/asterisk.git
synced 2026-07-28 00:10:25 -07:00
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/ ........ Merged revisions 433495 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433497 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -86,6 +86,11 @@ int ast_pbx_init(void); /*!< Provided by pbx.c */
|
||||
*
|
||||
* \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));
|
||||
|
||||
|
||||
+1
-1
@@ -2011,6 +2011,6 @@ int ast_aoc_cli_init(void)
|
||||
STASIS_MESSAGE_TYPE_INIT(aoc_d_type);
|
||||
STASIS_MESSAGE_TYPE_INIT(aoc_e_type);
|
||||
|
||||
ast_register_atexit(aoc_shutdown);
|
||||
ast_register_cleanup(aoc_shutdown);
|
||||
return ast_cli_register_multiple(aoc_cli, ARRAY_LEN(aoc_cli));
|
||||
}
|
||||
|
||||
+1
-1
@@ -4685,7 +4685,7 @@ int main(int argc, char *argv[])
|
||||
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();
|
||||
|
||||
|
||||
+1
-1
@@ -281,7 +281,7 @@ static void fd_shutdown(void)
|
||||
|
||||
int ast_fd_init(void)
|
||||
{
|
||||
ast_register_atexit(fd_shutdown);
|
||||
ast_register_cleanup(fd_shutdown);
|
||||
return ast_cli_register(&cli_show_fd);
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -1493,7 +1493,7 @@ void __ast_mm_init_phase_2(void)
|
||||
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) */
|
||||
|
||||
+1
-1
@@ -914,7 +914,7 @@ int astobj2_init(void)
|
||||
ast_cli_register_multiple(cli_astobj2, ARRAY_LEN(cli_astobj2));
|
||||
#endif /* defined(AO2_DEBUG) */
|
||||
|
||||
ast_register_atexit(astobj2_cleanup);
|
||||
ast_register_cleanup(astobj2_cleanup);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1211,7 +1211,7 @@ int container_init(void)
|
||||
}
|
||||
|
||||
ast_cli_register_multiple(cli_astobj2, ARRAY_LEN(cli_astobj2));
|
||||
ast_register_atexit(container_cleanup);
|
||||
ast_register_cleanup(container_cleanup);
|
||||
#endif /* defined(AO2_DEBUG) */
|
||||
|
||||
return 0;
|
||||
|
||||
+7
-18
@@ -5322,29 +5322,19 @@ static void bridge_prnt_obj(void *v_obj, void *where, ao2_prnt_fn *prnt)
|
||||
|
||||
/*!
|
||||
* \internal
|
||||
* \brief Shutdown the bridging system. Stuff to always do.
|
||||
* \since 12.0.0
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
static void bridge_shutdown(void)
|
||||
{
|
||||
ast_manager_unregister("BridgeTechnologyList");
|
||||
ast_manager_unregister("BridgeTechnologySuspend");
|
||||
ast_manager_unregister("BridgeTechnologyUnsuspend");
|
||||
ast_cli_unregister_multiple(bridge_cli, ARRAY_LEN(bridge_cli));
|
||||
ao2_container_unregister("bridges");
|
||||
}
|
||||
|
||||
/*!
|
||||
* \internal
|
||||
* \brief Shutdown the bridging system. More stuff to do on graceful shutdown.
|
||||
* \brief Shutdown the bridging system. Stuff to do on graceful shutdown.
|
||||
* \since 13.3.0
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
static void bridge_cleanup(void)
|
||||
{
|
||||
ast_manager_unregister("BridgeTechnologyList");
|
||||
ast_manager_unregister("BridgeTechnologySuspend");
|
||||
ast_manager_unregister("BridgeTechnologyUnsuspend");
|
||||
ast_cli_unregister_multiple(bridge_cli, ARRAY_LEN(bridge_cli));
|
||||
ao2_container_unregister("bridges");
|
||||
|
||||
ao2_cleanup(bridges);
|
||||
bridges = NULL;
|
||||
ao2_cleanup(bridge_manager);
|
||||
@@ -5354,7 +5344,6 @@ static void bridge_cleanup(void)
|
||||
int ast_bridging_init(void)
|
||||
{
|
||||
ast_register_cleanup(bridge_cleanup);
|
||||
ast_register_atexit(bridge_shutdown);
|
||||
|
||||
if (ast_stasis_bridging_init()) {
|
||||
return -1;
|
||||
|
||||
+1
-1
@@ -4688,7 +4688,7 @@ int ast_cc_init(void)
|
||||
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;
|
||||
}
|
||||
|
||||
+9
-19
@@ -1513,10 +1513,7 @@ static void cel_engine_cleanup(void)
|
||||
destroy_routes();
|
||||
destroy_subscriptions();
|
||||
STASIS_MESSAGE_TYPE_CLEANUP(cel_generic_type);
|
||||
}
|
||||
|
||||
static void cel_engine_atexit(void)
|
||||
{
|
||||
ast_cli_unregister(&cli_status);
|
||||
aco_info_destroy(&cel_cfg_info);
|
||||
ao2_global_obj_release(cel_configs);
|
||||
@@ -1525,12 +1522,6 @@ static void cel_engine_atexit(void)
|
||||
ao2_global_obj_release(cel_backends);
|
||||
}
|
||||
|
||||
static void cel_engine_abort(void)
|
||||
{
|
||||
cel_engine_cleanup();
|
||||
cel_engine_atexit();
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Create the Stasis subscriptions for CEL
|
||||
*/
|
||||
@@ -1714,7 +1705,7 @@ int ast_cel_engine_init(void)
|
||||
ao2_global_obj_replace_unref(cel_linkedids, container);
|
||||
ao2_cleanup(container);
|
||||
if (!container) {
|
||||
cel_engine_abort();
|
||||
cel_engine_cleanup();
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -1723,17 +1714,17 @@ int ast_cel_engine_init(void)
|
||||
ao2_global_obj_replace_unref(cel_dialstatus_store, container);
|
||||
ao2_cleanup(container);
|
||||
if (!container) {
|
||||
cel_engine_abort();
|
||||
cel_engine_cleanup();
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (STASIS_MESSAGE_TYPE_INIT(cel_generic_type)) {
|
||||
cel_engine_abort();
|
||||
cel_engine_cleanup();
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (ast_cli_register(&cli_status)) {
|
||||
cel_engine_abort();
|
||||
cel_engine_cleanup();
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -1741,12 +1732,12 @@ int ast_cel_engine_init(void)
|
||||
ao2_global_obj_replace_unref(cel_backends, container);
|
||||
ao2_cleanup(container);
|
||||
if (!container) {
|
||||
cel_engine_abort();
|
||||
cel_engine_cleanup();
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (aco_info_init(&cel_cfg_info)) {
|
||||
cel_engine_abort();
|
||||
cel_engine_cleanup();
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -1759,7 +1750,7 @@ int ast_cel_engine_init(void)
|
||||
struct cel_config *cel_cfg = cel_config_alloc();
|
||||
|
||||
if (!cel_cfg) {
|
||||
cel_engine_abort();
|
||||
cel_engine_cleanup();
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -1772,16 +1763,15 @@ int ast_cel_engine_init(void)
|
||||
}
|
||||
|
||||
if (create_subscriptions()) {
|
||||
cel_engine_abort();
|
||||
cel_engine_cleanup();
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (ast_cel_check_enabled() && create_routes()) {
|
||||
cel_engine_abort();
|
||||
cel_engine_cleanup();
|
||||
return -1;
|
||||
}
|
||||
|
||||
ast_register_atexit(cel_engine_atexit);
|
||||
ast_register_cleanup(cel_engine_cleanup);
|
||||
return 0;
|
||||
}
|
||||
|
||||
+1
-1
@@ -7645,7 +7645,7 @@ void ast_channels_init(void)
|
||||
|
||||
ast_plc_reload();
|
||||
|
||||
ast_register_atexit(channels_shutdown);
|
||||
ast_register_cleanup(channels_shutdown);
|
||||
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -2027,7 +2027,7 @@ static void cli_shutdown(void)
|
||||
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);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
||||
+1
-1
@@ -245,7 +245,7 @@ int ast_codec_init(void)
|
||||
}
|
||||
|
||||
ast_cli_register_multiple(codec_cli, ARRAY_LEN(codec_cli));
|
||||
ast_register_atexit(codec_shutdown);
|
||||
ast_register_cleanup(codec_shutdown);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
+1
-1
@@ -3836,7 +3836,7 @@ static void config_shutdown(void)
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
@@ -1281,7 +1281,7 @@ static void aco_deinit(void)
|
||||
int aco_init(void)
|
||||
{
|
||||
#ifdef AST_XML_DOCS
|
||||
ast_register_atexit(aco_deinit);
|
||||
ast_register_cleanup(aco_deinit);
|
||||
if (!(xmldocs = ast_xmldoc_build_documentation("configInfo"))) {
|
||||
ast_log(LOG_ERROR, "Couldn't build config documentation\n");
|
||||
return -1;
|
||||
|
||||
+1
-9
@@ -1009,14 +1009,6 @@ static void local_shutdown(void)
|
||||
ast_manager_unregister("LocalOptimizeAway");
|
||||
ast_channel_unregister(&local_tech);
|
||||
|
||||
it = ao2_iterator_init(locals, 0);
|
||||
while ((p = ao2_iterator_next(&it))) {
|
||||
if (p->base.owner) {
|
||||
ast_softhangup(p->base.owner, AST_SOFTHANGUP_APPUNLOAD);
|
||||
}
|
||||
ao2_ref(p, -1);
|
||||
}
|
||||
ao2_iterator_destroy(&it);
|
||||
ao2_ref(locals, -1);
|
||||
locals = NULL;
|
||||
|
||||
@@ -1066,6 +1058,6 @@ int ast_local_init(void)
|
||||
ast_cli_register_multiple(cli_local, ARRAY_LEN(cli_local));
|
||||
ast_manager_register_xml_core("LocalOptimizeAway", EVENT_FLAG_SYSTEM|EVENT_FLAG_CALL, manager_optimize_away);
|
||||
|
||||
ast_register_atexit(local_shutdown);
|
||||
ast_register_cleanup(local_shutdown);
|
||||
return 0;
|
||||
}
|
||||
|
||||
+1
-1
@@ -3342,7 +3342,7 @@ int ast_data_init(void)
|
||||
|
||||
AST_TEST_REGISTER(test_data_get);
|
||||
|
||||
ast_register_atexit(data_shutdown);
|
||||
ast_register_cleanup(data_shutdown);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
+1
-1
@@ -438,7 +438,7 @@ int dnsmgr_init(void)
|
||||
ast_cli_register(&cli_status);
|
||||
ast_cli_register(&cli_refresh);
|
||||
|
||||
ast_register_atexit(dnsmgr_shutdown);
|
||||
ast_register_cleanup(dnsmgr_shutdown);
|
||||
|
||||
return do_reload(1);
|
||||
}
|
||||
|
||||
+1
-1
@@ -1185,7 +1185,7 @@ int ast_features_init(void)
|
||||
if (res) {
|
||||
features_shutdown();
|
||||
} else {
|
||||
ast_register_atexit(features_shutdown);
|
||||
ast_register_cleanup(features_shutdown);
|
||||
}
|
||||
|
||||
return res;
|
||||
|
||||
+1
-1
@@ -1785,6 +1785,6 @@ int ast_file_init(void)
|
||||
STASIS_MESSAGE_TYPE_INIT(ast_format_register_type);
|
||||
STASIS_MESSAGE_TYPE_INIT(ast_format_unregister_type);
|
||||
ast_cli_register_multiple(cli_file, ARRAY_LEN(cli_file));
|
||||
ast_register_atexit(file_shutdown);
|
||||
ast_register_cleanup(file_shutdown);
|
||||
return 0;
|
||||
}
|
||||
|
||||
+1
-1
@@ -126,7 +126,7 @@ int ast_format_init(void)
|
||||
return -1;
|
||||
}
|
||||
|
||||
ast_register_atexit(format_shutdown);
|
||||
ast_register_cleanup(format_shutdown);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
+1
-1
@@ -341,7 +341,7 @@ int ast_format_cache_init(void)
|
||||
return -1;
|
||||
}
|
||||
|
||||
ast_register_atexit(format_cache_shutdown);
|
||||
ast_register_cleanup(format_cache_shutdown);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
+1
-1
@@ -2338,7 +2338,7 @@ int ast_http_init(void)
|
||||
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);
|
||||
}
|
||||
|
||||
+1
-1
@@ -214,6 +214,6 @@ static void image_shutdown(void)
|
||||
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;
|
||||
}
|
||||
|
||||
+1
-1
@@ -1186,7 +1186,7 @@ int ast_indications_init(void)
|
||||
|
||||
ast_cli_register_multiple(cli_indications, ARRAY_LEN(cli_indications));
|
||||
|
||||
ast_register_atexit(indications_shutdown);
|
||||
ast_register_cleanup(indications_shutdown);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -8603,7 +8603,7 @@ static int __init_manager(int reload, int by_external_config)
|
||||
#endif
|
||||
int res;
|
||||
|
||||
ast_register_atexit(manager_shutdown);
|
||||
ast_register_cleanup(manager_shutdown);
|
||||
|
||||
res = STASIS_MESSAGE_TYPE_INIT(ast_manager_get_generic_type);
|
||||
if (res != 0) {
|
||||
|
||||
@@ -591,10 +591,7 @@ static void manager_bridging_cleanup(void)
|
||||
{
|
||||
stasis_forward_cancel(topic_forwarder);
|
||||
topic_forwarder = NULL;
|
||||
}
|
||||
|
||||
static void manager_bridging_shutdown(void)
|
||||
{
|
||||
ast_manager_unregister("BridgeList");
|
||||
ast_manager_unregister("BridgeInfo");
|
||||
ast_manager_unregister("BridgeDestroy");
|
||||
@@ -612,7 +609,6 @@ int manager_bridging_init(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
ast_register_atexit(manager_bridging_shutdown);
|
||||
ast_register_cleanup(manager_bridging_cleanup);
|
||||
|
||||
manager_topic = ast_manager_get_topic();
|
||||
@@ -656,7 +652,7 @@ int manager_bridging_init(void)
|
||||
* thing and fail it.
|
||||
*/
|
||||
if (ret) {
|
||||
manager_bridging_shutdown();
|
||||
manager_bridging_cleanup();
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@@ -1136,7 +1136,7 @@ int manager_channels_init(void)
|
||||
return -1;
|
||||
}
|
||||
|
||||
ast_register_atexit(manager_channels_shutdown);
|
||||
ast_register_cleanup(manager_channels_shutdown);
|
||||
|
||||
ret |= stasis_message_router_add_cache_update(message_router,
|
||||
ast_channel_snapshot_type(), channel_snapshot_update, NULL);
|
||||
|
||||
@@ -61,7 +61,7 @@ int manager_endpoints_init(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
ast_register_atexit(manager_endpoints_shutdown);
|
||||
ast_register_cleanup(manager_endpoints_shutdown);
|
||||
|
||||
endpoint_topic = ast_endpoint_topic_all_cached();
|
||||
if (!endpoint_topic) {
|
||||
|
||||
+1
-1
@@ -176,7 +176,7 @@ int manager_mwi_init(void)
|
||||
return -1;
|
||||
}
|
||||
|
||||
ast_register_atexit(manager_mwi_shutdown);
|
||||
ast_register_cleanup(manager_mwi_shutdown);
|
||||
|
||||
ret |= stasis_message_router_add(message_router,
|
||||
ast_mwi_state_type(),
|
||||
|
||||
@@ -67,7 +67,7 @@ int manager_system_init(void)
|
||||
return -1;
|
||||
}
|
||||
|
||||
ast_register_atexit(manager_system_shutdown);
|
||||
ast_register_cleanup(manager_system_shutdown);
|
||||
|
||||
/* If somehow we failed to add any routes, just shut down the whole
|
||||
* thing and fail it.
|
||||
|
||||
+1
-1
@@ -1516,7 +1516,7 @@ int ast_msg_init(void)
|
||||
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;
|
||||
}
|
||||
|
||||
+1
-1
@@ -12090,7 +12090,7 @@ int load_pbx(void)
|
||||
int res = 0;
|
||||
int x;
|
||||
|
||||
ast_register_atexit(unload_pbx);
|
||||
ast_register_cleanup(unload_pbx);
|
||||
|
||||
/* Initialize the PBX */
|
||||
ast_verb(1, "Asterisk PBX Core Initializing\n");
|
||||
|
||||
+1
-1
@@ -403,7 +403,7 @@ static void pickup_shutdown(void)
|
||||
int ast_pickup_init(void)
|
||||
{
|
||||
STASIS_MESSAGE_TYPE_INIT(ast_call_pickup_type);
|
||||
ast_register_atexit(pickup_shutdown);
|
||||
ast_register_cleanup(pickup_shutdown);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
+1
-1
@@ -2092,7 +2092,7 @@ int ast_rtp_engine_init()
|
||||
}
|
||||
STASIS_MESSAGE_TYPE_INIT(ast_rtp_rtcp_sent_type);
|
||||
STASIS_MESSAGE_TYPE_INIT(ast_rtp_rtcp_received_type);
|
||||
ast_register_atexit(rtp_engine_shutdown);
|
||||
ast_register_cleanup(rtp_engine_shutdown);
|
||||
|
||||
/* Define all the RTP mime types available */
|
||||
set_next_mime_type(ast_format_g723, 0, "audio", "G723", 8000);
|
||||
|
||||
+2
-10
@@ -416,16 +416,11 @@ static int object_type_field_cmp(void *obj, void *arg, int flags)
|
||||
return CMP_MATCH;
|
||||
}
|
||||
|
||||
/*! \brief Cleanup function */
|
||||
static void sorcery_exit(void)
|
||||
{
|
||||
ast_threadpool_shutdown(threadpool);
|
||||
threadpool = NULL;
|
||||
}
|
||||
|
||||
/*! \brief Cleanup function for graceful shutdowns */
|
||||
static void sorcery_cleanup(void)
|
||||
{
|
||||
ast_threadpool_shutdown(threadpool);
|
||||
threadpool = NULL;
|
||||
ao2_cleanup(wizards);
|
||||
wizards = NULL;
|
||||
ao2_cleanup(observers);
|
||||
@@ -507,7 +502,6 @@ int ast_sorcery_init(void)
|
||||
observers = ao2_container_alloc_list(AO2_ALLOC_OPT_LOCK_RWLOCK, 0, NULL, NULL);
|
||||
if (!observers) {
|
||||
sorcery_cleanup();
|
||||
sorcery_exit();
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -515,12 +509,10 @@ int ast_sorcery_init(void)
|
||||
sorcery_instance_hash, sorcery_instance_cmp);
|
||||
if (!instances) {
|
||||
sorcery_cleanup();
|
||||
sorcery_exit();
|
||||
return -1;
|
||||
}
|
||||
|
||||
ast_register_cleanup(sorcery_cleanup);
|
||||
ast_register_atexit(sorcery_exit);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
+1
-1
@@ -322,7 +322,7 @@ int ast_sounds_index_init(void)
|
||||
return -1;
|
||||
}
|
||||
|
||||
ast_register_atexit(sounds_cleanup);
|
||||
ast_register_cleanup(sounds_cleanup);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
+2
-8
@@ -1533,16 +1533,11 @@ STASIS_MESSAGE_TYPE_DEFN(ast_multi_user_event_type,
|
||||
|
||||
/*! @} */
|
||||
|
||||
/*! \brief Shutdown function */
|
||||
static void stasis_exit(void)
|
||||
{
|
||||
ast_threadpool_shutdown(pool);
|
||||
pool = NULL;
|
||||
}
|
||||
|
||||
/*! \brief Cleanup function for graceful shutdowns */
|
||||
static void stasis_cleanup(void)
|
||||
{
|
||||
ast_threadpool_shutdown(pool);
|
||||
pool = NULL;
|
||||
STASIS_MESSAGE_TYPE_CLEANUP(stasis_subscription_change_type);
|
||||
STASIS_MESSAGE_TYPE_CLEANUP(ast_multi_user_event_type);
|
||||
aco_info_destroy(&cfg_info);
|
||||
@@ -1557,7 +1552,6 @@ int stasis_init(void)
|
||||
|
||||
/* Be sure the types are cleaned up after the message bus */
|
||||
ast_register_cleanup(stasis_cleanup);
|
||||
ast_register_atexit(stasis_exit);
|
||||
|
||||
if (aco_info_init(&cfg_info)) {
|
||||
return -1;
|
||||
|
||||
+1
-1
@@ -516,5 +516,5 @@ static void stun_shutdown(void)
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -278,7 +278,7 @@ int ast_tps_init(void)
|
||||
|
||||
ast_cli_register_multiple(taskprocessor_clis, ARRAY_LEN(taskprocessor_clis));
|
||||
|
||||
ast_register_atexit(tps_shutdown);
|
||||
ast_register_cleanup(tps_shutdown);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -258,7 +258,7 @@ void threadstorage_init(void)
|
||||
{
|
||||
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) */
|
||||
|
||||
+1
-1
@@ -289,7 +289,7 @@ int ast_timing_init(void)
|
||||
return -1;
|
||||
}
|
||||
|
||||
ast_register_atexit(timing_shutdown);
|
||||
ast_register_cleanup(timing_shutdown);
|
||||
|
||||
return ast_cli_register_multiple(cli_timing, ARRAY_LEN(cli_timing));
|
||||
}
|
||||
|
||||
+1
-1
@@ -1403,5 +1403,5 @@ void ast_udptl_init(void)
|
||||
|
||||
ast_cli_register_multiple(cli_udptl, ARRAY_LEN(cli_udptl));
|
||||
|
||||
ast_register_atexit(udptl_shutdown);
|
||||
ast_register_cleanup(udptl_shutdown);
|
||||
}
|
||||
|
||||
+1
-1
@@ -2476,7 +2476,7 @@ int ast_utils_init(void)
|
||||
ast_cli_register_multiple(utils_cli, ARRAY_LEN(utils_cli));
|
||||
#endif
|
||||
#endif
|
||||
ast_register_atexit(utils_shutdown);
|
||||
ast_register_cleanup(utils_shutdown);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -2962,7 +2962,7 @@ int ast_xmldoc_load_documentation(void)
|
||||
|
||||
ast_cli_register(&cli_dump_xmldocs);
|
||||
/* 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 */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user