ikev2: Enable path probing for currently active MOBIKE task

This might not be the case if e.g. an address appeared but the old one
is still available but not actually usable.  Without this the MOBIKE
task would eventually time out even though we might be able to switch
to a working address.
This commit is contained in:
Tobias Brunner 2014-07-28 12:25:01 +02:00
parent 2180ace937
commit 1b17f647a5

View File

@ -1373,7 +1373,25 @@ METHOD(task_manager_t, queue_mobike, void,
mobike = ike_mobike_create(this->ike_sa, TRUE);
if (roam)
{
enumerator_t *enumerator;
task_t *current;
mobike->roam(mobike, address);
/* enable path probing for a currently active MOBIKE task. This might
* not be the case if an address appeared on a new interface while the
* current address is not working but has not yet disappeared. */
enumerator = array_create_enumerator(this->active_tasks);
while (enumerator->enumerate(enumerator, &current))
{
if (current->get_type(current) == TASK_IKE_MOBIKE)
{
ike_mobike_t *active = (ike_mobike_t*)current;
active->enable_probing(active);
break;
}
}
enumerator->destroy(enumerator);
}
else
{