These will get terminated by the peer after a while. So we don't want
to reuse them.
{
return FALSE;
}
+ /* mark the SA so it won't get reused even though it's established */
+ set_condition(this, COND_REDIRECTED, TRUE);
+
new_priv = (private_ike_sa_t*)new;
new->set_peer_cfg(new, this->peer_cfg);
new_priv->redirected_from = this->other_host->clone(this->other_host);
}
if (entry->ike_sa->get_state(entry->ike_sa) == IKE_DELETING ||
entry->ike_sa->get_state(entry->ike_sa) == IKE_REKEYED ||
+ entry->ike_sa->has_condition(entry->ike_sa, COND_REDIRECTED) ||
ike_sa_is_delete_queued(entry->ike_sa))
{ /* skip IKE_SAs which are not usable, wake other waiting threads */
entry->condvar->signal(entry->condvar);