aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2007-04-23 12:59:10 +0000
committerMartin Willi <martin@strongswan.org>2007-04-23 12:59:10 +0000
commit17712ea86644c1d40b4492a3240534bde7608c06 (patch)
treeb460c55a728c3d189d8ae35fa35d82c03abeae75
parent63c477244dccc0d9abb0ca60002fb0486c2adf85 (diff)
downloadstrongswan-17712ea86644c1d40b4492a3240534bde7608c06.tar.bz2
strongswan-17712ea86644c1d40b4492a3240534bde7608c06.tar.xz
fixed CHILD_SA proposal selection when not using DH exchange
-rw-r--r--src/charon/config/child_cfg.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/src/charon/config/child_cfg.c b/src/charon/config/child_cfg.c
index 440f7710b..e9f0e5249 100644
--- a/src/charon/config/child_cfg.c
+++ b/src/charon/config/child_cfg.c
@@ -175,26 +175,21 @@ static proposal_t* select_proposal(private_child_cfg_t*this,
/* compare all stored proposals with all supplied. Stored ones are preferred. */
while (stored_iter->iterate(stored_iter, (void**)&stored))
{
+ stored = stored->clone(stored);
supplied_iter->reset(supplied_iter);
while (supplied_iter->iterate(supplied_iter, (void**)&supplied))
{
if (strip_dh)
{
- /* remove DH groups on a copy */
- stored = stored->clone(stored);
strip_dh_from_proposal(stored);
- selected = stored->select(stored, supplied);
- stored->destroy(stored);
- }
- else
- {
- selected = stored->select(stored, supplied);
}
+ selected = stored->select(stored, supplied);
if (selected)
{
break;
}
}
+ stored->destroy(stored);
if (selected)
{
break;