ike: Store unhandled attributes on IKE_SA as well
This commit is contained in:
parent
b16e177e06
commit
5ae3221075
|
@ -2150,8 +2150,11 @@ METHOD(ike_sa_t, destroy, void,
|
|||
/* remove attributes first, as we pass the IKE_SA to the handler */
|
||||
while (array_remove(this->attributes, ARRAY_TAIL, &entry))
|
||||
{
|
||||
hydra->attributes->release(hydra->attributes, entry.handler,
|
||||
this->other_id, entry.type, entry.data);
|
||||
if (entry.handler)
|
||||
{
|
||||
hydra->attributes->release(hydra->attributes, entry.handler,
|
||||
this->other_id, entry.type, entry.data);
|
||||
}
|
||||
free(entry.data.ptr);
|
||||
}
|
||||
/* uninstall CHILD_SAs before virtual IPs, otherwise we might kill
|
||||
|
|
|
@ -978,6 +978,9 @@ struct ike_sa_t {
|
|||
* registered at the IKE_SA. Attributes are inherit()ed and get released
|
||||
* when the IKE_SA is closed.
|
||||
*
|
||||
* Unhandled attributes are passed as well, but with a NULL handler. They
|
||||
* do not get released.
|
||||
*
|
||||
* @param handler handler installed the attribute, use for release()
|
||||
* @param type configuration attribute type
|
||||
* @param data associated attribute data
|
||||
|
|
|
@ -139,11 +139,8 @@ static void handle_attribute(private_mode_config_t *this,
|
|||
handler = hydra->attributes->handle(hydra->attributes,
|
||||
this->ike_sa->get_other_id(this->ike_sa), handler,
|
||||
ca->get_type(ca), ca->get_chunk(ca));
|
||||
if (handler)
|
||||
{
|
||||
this->ike_sa->add_configuration_attribute(this->ike_sa,
|
||||
handler, ca->get_type(ca), ca->get_chunk(ca));
|
||||
}
|
||||
this->ike_sa->add_configuration_attribute(this->ike_sa,
|
||||
handler, ca->get_type(ca), ca->get_chunk(ca));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -130,11 +130,8 @@ static void handle_attribute(private_ike_config_t *this,
|
|||
handler = hydra->attributes->handle(hydra->attributes,
|
||||
this->ike_sa->get_other_id(this->ike_sa), handler,
|
||||
ca->get_type(ca), ca->get_chunk(ca));
|
||||
if (handler)
|
||||
{
|
||||
this->ike_sa->add_configuration_attribute(this->ike_sa,
|
||||
handler, ca->get_type(ca), ca->get_chunk(ca));
|
||||
}
|
||||
this->ike_sa->add_configuration_attribute(this->ike_sa,
|
||||
handler, ca->get_type(ca), ca->get_chunk(ca));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue