aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/charon/sa/ike_sa_manager.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/charon/sa/ike_sa_manager.c b/src/charon/sa/ike_sa_manager.c
index 3d3c7d869..48578eedc 100644
--- a/src/charon/sa/ike_sa_manager.c
+++ b/src/charon/sa/ike_sa_manager.c
@@ -1413,6 +1413,8 @@ static void checkin_and_destroy(private_ike_sa_manager_t *this, ike_sa_t *ike_sa
/* they will wake us again when their work is done */
entry->condvar->wait(entry->condvar, this->segments[segment].mutex);
}
+ remove_entry(this, entry);
+ unlock_single_segment(this, segment);
if (entry->half_open)
{
@@ -1424,9 +1426,7 @@ static void checkin_and_destroy(private_ike_sa_manager_t *this, ike_sa_t *ike_sa
remove_connected_peers(this, entry);
}
- remove_entry(this, entry);
entry_destroy(entry);
- unlock_single_segment(this, segment);
DBG2(DBG_MGR, "check-in and destroy of IKE_SA successful");
}