diff options
author | Martin Willi <martin@strongswan.org> | 2006-10-24 08:46:17 +0000 |
---|---|---|
committer | Martin Willi <martin@strongswan.org> | 2006-10-24 08:46:17 +0000 |
commit | 55bbff11ec96f74b27afc36dd8ca3e34ff425b40 (patch) | |
tree | 9d0ff1aad70e01718405a8da314d22a86b072947 /src/charon/config/policies/local_policy_store.c | |
parent | 5c4cc9a4e328d86867959dec0e082f7e4f098a6e (diff) | |
download | strongswan-55bbff11ec96f74b27afc36dd8ca3e34ff425b40.tar.bz2 strongswan-55bbff11ec96f74b27afc36dd8ca3e34ff425b40.tar.xz |
linked list cleanups
added list methods invoke(), destroy_offset(), destroy_function()
simplified list destruction when destroying its items
Diffstat (limited to 'src/charon/config/policies/local_policy_store.c')
-rw-r--r-- | src/charon/config/policies/local_policy_store.c | 15 |
1 files changed, 2 insertions, 13 deletions
diff --git a/src/charon/config/policies/local_policy_store.c b/src/charon/config/policies/local_policy_store.c index 577b83a28..1fca08107 100644 --- a/src/charon/config/policies/local_policy_store.c +++ b/src/charon/config/policies/local_policy_store.c @@ -69,7 +69,6 @@ static bool contains_traffic_selectors(policy_t *policy, bool mine, { linked_list_t *selected; bool contains = FALSE; - traffic_selector_t *to; if (mine) { @@ -83,11 +82,7 @@ static bool contains_traffic_selectors(policy_t *policy, bool mine, { contains = TRUE; } - while (selected->remove_last(selected, (void**)&to) == SUCCESS) - { - to->destroy(to); - } - selected->destroy(selected); + selected->destroy_offset(selected, offsetof(traffic_selector_t, destroy)); return contains; } @@ -249,14 +244,8 @@ static iterator_t* create_iterator(private_local_policy_store_t *this) */ static void destroy(private_local_policy_store_t *this) { - policy_t *policy; - pthread_mutex_lock(&(this->mutex)); - while (this->policies->remove_last(this->policies, (void**)&policy) == SUCCESS) - { - policy->destroy(policy); - } - this->policies->destroy(this->policies); + this->policies->destroy_offset(this->policies, offsetof(policy_t, destroy)); pthread_mutex_unlock(&(this->mutex)); free(this); } |