aboutsummaryrefslogtreecommitdiffstats
path: root/Source/charon/config
diff options
context:
space:
mode:
Diffstat (limited to 'Source/charon/config')
-rw-r--r--Source/charon/config/child_proposal.c3
-rw-r--r--Source/charon/config/sa_config.c9
2 files changed, 5 insertions, 7 deletions
diff --git a/Source/charon/config/child_proposal.c b/Source/charon/config/child_proposal.c
index 5a68f4f9b..729102ebf 100644
--- a/Source/charon/config/child_proposal.c
+++ b/Source/charon/config/child_proposal.c
@@ -473,9 +473,10 @@ static void get_protocols(private_child_proposal_t *this, protocol_id_t ids[2])
if (i>1)
{
/* should not happen, but who knows */
- return;
+ break;
}
}
+ iterator->destroy(iterator);
}
/**
diff --git a/Source/charon/config/sa_config.c b/Source/charon/config/sa_config.c
index f098d176f..ca29b0294 100644
--- a/Source/charon/config/sa_config.c
+++ b/Source/charon/config/sa_config.c
@@ -287,25 +287,22 @@ static status_t destroy(private_sa_config_t *this)
/* delete proposals */
- while(this->proposals->get_count(this->proposals) > 0)
+ while(this->proposals->remove_last(this->proposals, (void**)&proposal) == SUCCESS)
{
- this->proposals->remove_last(this->proposals, (void**)&proposal);
proposal->destroy(proposal);
}
this->proposals->destroy(this->proposals);
/* delete traffic selectors */
- while(this->ts_initiator->get_count(this->ts_initiator) > 0)
+ while(this->ts_initiator->remove_last(this->ts_initiator, (void**)&traffic_selector) == SUCCESS)
{
- this->ts_initiator->remove_last(this->ts_initiator, (void**)&traffic_selector);
traffic_selector->destroy(traffic_selector);
}
this->ts_initiator->destroy(this->ts_initiator);
/* delete traffic selectors */
- while(this->ts_responder->get_count(this->ts_responder) > 0)
+ while(this->ts_responder->remove_last(this->ts_responder, (void**)&traffic_selector) == SUCCESS)
{
- this->ts_responder->remove_last(this->ts_responder, (void**)&traffic_selector);
traffic_selector->destroy(traffic_selector);
}
this->ts_responder->destroy(this->ts_responder);