diff options
author | Jan Hutter <jhutter@hsr.ch> | 2005-11-16 07:01:08 +0000 |
---|---|---|
committer | Jan Hutter <jhutter@hsr.ch> | 2005-11-16 07:01:08 +0000 |
commit | 083254bb69c401c3428f43a0a0986fff0646e72d (patch) | |
tree | a563017f686a489acd9e1ffc3eea67b552ec9af8 /Source | |
parent | cb4f26c5fe8b8f0d285bf1c7b1f3378059c90923 (diff) | |
download | strongswan-083254bb69c401c3428f43a0a0986fff0646e72d.tar.bz2 strongswan-083254bb69c401c3428f43a0a0986fff0646e72d.tar.xz |
fixed bug in logger_manager
Diffstat (limited to 'Source')
-rw-r--r-- | Source/charon/testcases/testcases.c | 2 | ||||
-rw-r--r-- | Source/charon/utils/logger_manager.c | 16 |
2 files changed, 13 insertions, 5 deletions
diff --git a/Source/charon/testcases/testcases.c b/Source/charon/testcases/testcases.c index 7576080c4..e227ddbf1 100644 --- a/Source/charon/testcases/testcases.c +++ b/Source/charon/testcases/testcases.c @@ -233,7 +233,7 @@ logger_manager_t *global_logger_manager; global_event_queue = event_queue_create(); global_send_queue = send_queue_create(); - + global_logger_manager->disable_logger_level(global_logger_manager,TESTER,ALL); tester_t *tester = tester_create(test_output, FALSE); diff --git a/Source/charon/utils/logger_manager.c b/Source/charon/utils/logger_manager.c index 26635d9ef..29063d8a0 100644 --- a/Source/charon/utils/logger_manager.c +++ b/Source/charon/utils/logger_manager.c @@ -141,7 +141,7 @@ static logger_t *create_logger(private_logger_manager_t *this, logger_context_t context_name = "NO CONTEXT"; break; } - + /* logger manager is thread save */ pthread_mutex_lock(&(this->mutex)); if (name != NULL) { @@ -186,9 +186,14 @@ static logger_t *create_logger(private_logger_manager_t *this, logger_context_t } +/** + * Implements logger_manager_t-function get_logger_level. + * @see logger_manager_s.get_logger_level. + */ static logger_level_t get_logger_level (private_logger_manager_t *this, logger_context_t context) { linked_list_iterator_t *iterator; + /* set logger_level to default logger_level */ logger_level_t logger_level = this->default_log_level; pthread_mutex_lock(&(this->mutex)); @@ -198,6 +203,8 @@ static logger_level_t get_logger_level (private_logger_manager_t *this, logger_c pthread_mutex_unlock(&(this->mutex)); return logger_level; } + + /* check for existing logger_level entry */ while (iterator->has_next(iterator)) { @@ -266,7 +273,6 @@ static status_t destroy_logger (private_logger_manager_t *this,logger_t *logger) */ static status_t set_logger_level (private_logger_manager_t *this, logger_context_t context,logger_level_t logger_level,bool enable) { - linked_list_iterator_t *iterator; status_t status; @@ -278,6 +284,7 @@ static status_t set_logger_level (private_logger_manager_t *this, logger_context } status = NOT_FOUND; + /* find existing logger_level entry */ while (iterator->has_next(iterator)) { logger_levels_entry_t * entry; @@ -308,7 +315,7 @@ static status_t set_logger_level (private_logger_manager_t *this, logger_context if (status == NOT_FOUND) { - + /* logger_levels entry not existing for current context */ logger_levels_entry_t *entry = allocator_alloc_thing(logger_levels_entry_t); if (entry == NULL) { @@ -316,11 +323,12 @@ static status_t set_logger_level (private_logger_manager_t *this, logger_context return OUT_OF_RES; } entry->context = context; - entry->level = (enable) ? logger_level : this->default_log_level; + entry->level = (enable) ? logger_level : (this->default_log_level & (~logger_level)); status = this->logger_levels->insert_last(this->logger_levels,entry); if (status != SUCCESS) { + allocator_free(entry); pthread_mutex_unlock(&(this->mutex)); return status; } |