diff options
author | Jan Hutter <jhutter@hsr.ch> | 2005-11-16 12:22:57 +0000 |
---|---|---|
committer | Jan Hutter <jhutter@hsr.ch> | 2005-11-16 12:22:57 +0000 |
commit | fe684f2a5e46bd145b080b995a3dcdae19962d5c (patch) | |
tree | 8d188172c63a4d4c216e12975ff6a5adb2eb2a9e /Source/charon | |
parent | db7154547e58b3240f24f593b52a69b31c4ffe40 (diff) | |
download | strongswan-fe684f2a5e46bd145b080b995a3dcdae19962d5c.tar.bz2 strongswan-fe684f2a5e46bd145b080b995a3dcdae19962d5c.tar.xz |
- logger manager is destroyed at end
Diffstat (limited to 'Source/charon')
-rw-r--r-- | Source/charon/daemon.c | 46 |
1 files changed, 29 insertions, 17 deletions
diff --git a/Source/charon/daemon.c b/Source/charon/daemon.c index a36e9402b..a720a9c73 100644 --- a/Source/charon/daemon.c +++ b/Source/charon/daemon.c @@ -97,6 +97,23 @@ int main() /* set signal handler */ register_signals(); + /* logger_manager is created first */ + global_logger_manager = logger_manager_create(ALL); + if (global_logger_manager == NULL) + { + printf("could not create logger manager"); + return -1; + } + + /* a own logger for the daemon is created */ + logger = global_logger_manager->create_logger(global_logger_manager,DAEMON,NULL); + if (logger == NULL) + { + printf("could not create logger object"); + destroy_globals(); + return -1; + } + /* initialize all global objects */ if (initialize_globals() != SUCCESS) { @@ -200,15 +217,13 @@ static void register_signals() static status_t initialize_globals() { /* initialize global object */ - global_logger_manager = logger_manager_create(ALL); - global_socket = socket_create(4600); + global_socket = socket_create(4600); + global_ike_sa_manager = ike_sa_manager_create(); global_job_queue = job_queue_create(); global_event_queue = event_queue_create(); global_send_queue = send_queue_create(); - global_ike_sa_manager = ike_sa_manager_create(); - if ((global_logger_manager == NULL) || - (global_socket == NULL) || + if ( (global_socket == NULL) || (global_job_queue == NULL) || (global_event_queue == NULL) || (global_send_queue == NULL) || @@ -241,10 +256,6 @@ static void destroy_globals() { global_socket->destroy(global_socket); } - if (global_logger_manager != NULL) - { - global_logger_manager->destroy(global_logger_manager); - } if (global_ike_sa_manager != NULL) { global_ike_sa_manager->destroy(global_ike_sa_manager); @@ -291,22 +302,18 @@ static status_t start_threads() */ static void end_threads() { - logger->log(logger,CONTROL_MORE,"going to stop receiver thread"); if (receiver_thread != NULL) { receiver_thread->destroy(receiver_thread); } - logger->log(logger,CONTROL_MORE,"going to stop scheduler thread"); if (scheduler_thread != NULL) { scheduler_thread->destroy(scheduler_thread); } - logger->log(logger,CONTROL_MORE,"going to stop sender thread"); if (sender_thread != NULL) { sender_thread->destroy(sender_thread); } - logger->log(logger,CONTROL_MORE,"going to stop all worker threads"); if (thread_pool != NULL) { thread_pool->destroy(thread_pool); @@ -324,13 +331,18 @@ static void destroy_and_exit(int exit_code) logger->log(logger,CONTROL,"going to exit daemon"); end_threads(); - - /* logger is destroyed */ - logger->log(logger,CONTROL_MORE,"destroy logger and afterwards all global objects -> No more log from here"); - global_logger_manager->destroy_logger(global_logger_manager,logger); /* all globals can be destroyed now */ destroy_globals(); + + /* logger is destroyed */ + logger->log(logger,CONTROL_MORE,"destroy logger"); + global_logger_manager->destroy_logger(global_logger_manager,logger); + logger->log(logger,CONTROL_MORE,"destroy logger_manager"); + if (global_logger_manager != NULL) + { + global_logger_manager->destroy(global_logger_manager); + } #ifdef LEAK_DETECTIVE /* Leaks are reported in log file */ |