fixed possible deadlock in checkin_and_destroy
This commit is contained in:
@@ -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 */
|
/* they will wake us again when their work is done */
|
||||||
entry->condvar->wait(entry->condvar, this->segments[segment].mutex);
|
entry->condvar->wait(entry->condvar, this->segments[segment].mutex);
|
||||||
}
|
}
|
||||||
|
remove_entry(this, entry);
|
||||||
|
unlock_single_segment(this, segment);
|
||||||
|
|
||||||
if (entry->half_open)
|
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_connected_peers(this, entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
remove_entry(this, entry);
|
|
||||||
entry_destroy(entry);
|
entry_destroy(entry);
|
||||||
unlock_single_segment(this, segment);
|
|
||||||
|
|
||||||
DBG2(DBG_MGR, "check-in and destroy of IKE_SA successful");
|
DBG2(DBG_MGR, "check-in and destroy of IKE_SA successful");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user