aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/sa/connect_manager.c
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2011-05-19 18:52:57 +0200
committerTobias Brunner <tobias@strongswan.org>2011-07-06 09:43:45 +0200
commit47daa0e6fe685d7c9fbcf48156b6026c566878ab (patch)
tree4a090ea262bd81be67064c6015dece659b9a3fe9 /src/libcharon/sa/connect_manager.c
parent67405ce808ad02b5d8b7a30cef8e87b839c299cf (diff)
downloadstrongswan-47daa0e6fe685d7c9fbcf48156b6026c566878ab.tar.bz2
strongswan-47daa0e6fe685d7c9fbcf48156b6026c566878ab.tar.xz
Replaced more complex iterator usages.
Diffstat (limited to 'src/libcharon/sa/connect_manager.c')
-rw-r--r--src/libcharon/sa/connect_manager.c39
1 files changed, 14 insertions, 25 deletions
diff --git a/src/libcharon/sa/connect_manager.c b/src/libcharon/sa/connect_manager.c
index fdc917a2e..aa765a962 100644
--- a/src/libcharon/sa/connect_manager.c
+++ b/src/libcharon/sa/connect_manager.c
@@ -550,26 +550,15 @@ static status_t endpoints_contain(linked_list_t *endpoints, host_t *host,
*/
static void insert_pair_by_priority(linked_list_t *pairs, endpoint_pair_t *pair)
{
- iterator_t *iterator;
+ enumerator_t *enumerator = pairs->create_enumerator(pairs);
endpoint_pair_t *current;
- bool inserted = FALSE;
-
- iterator = pairs->create_iterator(pairs, TRUE);
- while (iterator->iterate(iterator, (void**)&current))
- {
- if (current->priority < pair->priority)
- {
- iterator->insert_before(iterator, pair);
- inserted = TRUE;
- break;
- }
- }
- iterator->destroy(iterator);
-
- if (!inserted)
+ while (enumerator->enumerate(enumerator, (void**)&current) &&
+ current->priority >= pair->priority)
{
- pairs->insert_last(pairs, pair);
+ continue;
}
+ pairs->insert_before(pairs, enumerator, pair);
+ enumerator->destroy(enumerator);
}
/**
@@ -679,17 +668,17 @@ static void print_checklist(check_list_t *checklist)
*/
static void prune_pairs(linked_list_t *pairs)
{
- iterator_t *iterator, *search;
+ enumerator_t *enumerator, *search;
endpoint_pair_t *current, *other;
u_int32_t id = 0;
- iterator = pairs->create_iterator(pairs, TRUE);
- search = pairs->create_iterator(pairs, TRUE);
- while (iterator->iterate(iterator, (void**)&current))
+ enumerator = pairs->create_enumerator(pairs);
+ search = pairs->create_enumerator(pairs);
+ while (enumerator->enumerate(enumerator, (void**)&current))
{
current->id = ++id;
- while (search->iterate(search, (void**)&other))
+ while (search->enumerate(search, (void**)&other))
{
if (current == other)
{
@@ -705,14 +694,14 @@ static void prune_pairs(linked_list_t *pairs)
* 'current', remove it */
DBG1(DBG_IKE, "pruning endpoint pair %#H - %#H with priority %d",
other->local, other->remote, other->priority);
- search->remove(search);
+ pairs->remove_at(pairs, search);
endpoint_pair_destroy(other);
}
}
- search->reset(search);
+ pairs->reset_enumerator(pairs, search);
}
search->destroy(search);
- iterator->destroy(iterator);
+ enumerator->destroy(enumerator);
}
/**