Reuse reqid of an existing Quick Mode, even if it has been rekeyed

If two peers rekey Quick Modes at the same time, the original Quick Mode is
in REKEYING state and hence the requid is not reused. This is required though,
as two identical policies won't work if they have different requids.
This commit is contained in:
Martin Willi
2013-04-03 15:56:26 +02:00
parent 7f4f1e8249
commit ac48d9e458
+2 -1
View File
@@ -925,7 +925,8 @@ static void check_for_rekeyed_child(private_quick_mode_t *this)
enumerator = this->ike_sa->create_child_sa_enumerator(this->ike_sa);
while (this->reqid == 0 && enumerator->enumerate(enumerator, &child_sa))
{
if (child_sa->get_state(child_sa) == CHILD_INSTALLED &&
if ((child_sa->get_state(child_sa) == CHILD_INSTALLED ||
child_sa->get_state(child_sa) == CHILD_REKEYING) &&
streq(child_sa->get_name(child_sa),
this->config->get_name(this->config)))
{