aboutsummaryrefslogtreecommitdiffstats
path: root/src/charon/config/policies/local_policy_store.c
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2006-10-24 08:46:17 +0000
committerMartin Willi <martin@strongswan.org>2006-10-24 08:46:17 +0000
commit55bbff11ec96f74b27afc36dd8ca3e34ff425b40 (patch)
tree9d0ff1aad70e01718405a8da314d22a86b072947 /src/charon/config/policies/local_policy_store.c
parent5c4cc9a4e328d86867959dec0e082f7e4f098a6e (diff)
downloadstrongswan-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.c15
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);
}