aboutsummaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorJan Hutter <jhutter@hsr.ch>2005-11-16 07:01:08 +0000
committerJan Hutter <jhutter@hsr.ch>2005-11-16 07:01:08 +0000
commit083254bb69c401c3428f43a0a0986fff0646e72d (patch)
treea563017f686a489acd9e1ffc3eea67b552ec9af8 /Source
parentcb4f26c5fe8b8f0d285bf1c7b1f3378059c90923 (diff)
downloadstrongswan-083254bb69c401c3428f43a0a0986fff0646e72d.tar.bz2
strongswan-083254bb69c401c3428f43a0a0986fff0646e72d.tar.xz
fixed bug in logger_manager
Diffstat (limited to 'Source')
-rw-r--r--Source/charon/testcases/testcases.c2
-rw-r--r--Source/charon/utils/logger_manager.c16
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;
}