diff options
-rw-r--r-- | src/charon/sa/ike_sa_manager.c | 4 |
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"); } |