diff options
Diffstat (limited to 'Source/charon/config')
-rw-r--r-- | Source/charon/config/child_proposal.c | 3 | ||||
-rw-r--r-- | Source/charon/config/sa_config.c | 9 |
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); |