child-rekey: Don't migrate child-create task if we already are deleting
If we are already deleting the old/redundant CHILD_SA, we must not migrate the child-create task as that would destroy the new CHILD_SA we already moved to the IKE_SA. Fixes #3644.
This commit is contained in:
@@ -573,14 +573,15 @@ METHOD(child_rekey_t, collide, void,
|
|||||||
METHOD(task_t, migrate, void,
|
METHOD(task_t, migrate, void,
|
||||||
private_child_rekey_t *this, ike_sa_t *ike_sa)
|
private_child_rekey_t *this, ike_sa_t *ike_sa)
|
||||||
{
|
{
|
||||||
if (this->child_create)
|
/* only migrate the currently active task */
|
||||||
{
|
|
||||||
this->child_create->task.migrate(&this->child_create->task, ike_sa);
|
|
||||||
}
|
|
||||||
if (this->child_delete)
|
if (this->child_delete)
|
||||||
{
|
{
|
||||||
this->child_delete->task.migrate(&this->child_delete->task, ike_sa);
|
this->child_delete->task.migrate(&this->child_delete->task, ike_sa);
|
||||||
}
|
}
|
||||||
|
else if (this->child_create)
|
||||||
|
{
|
||||||
|
this->child_create->task.migrate(&this->child_create->task, ike_sa);
|
||||||
|
}
|
||||||
DESTROY_IF(this->collision);
|
DESTROY_IF(this->collision);
|
||||||
|
|
||||||
this->ike_sa = ike_sa;
|
this->ike_sa = ike_sa;
|
||||||
|
|||||||
Reference in New Issue
Block a user