fixed bug with roadwarrior and wildcard IDs
This commit is contained in:
+19
-11
@@ -327,11 +327,9 @@ static peer_cfg_t* get_peer_cfg(private_ike_sa_t *this)
|
|||||||
*/
|
*/
|
||||||
static void set_peer_cfg(private_ike_sa_t *this, peer_cfg_t *peer_cfg)
|
static void set_peer_cfg(private_ike_sa_t *this, peer_cfg_t *peer_cfg)
|
||||||
{
|
{
|
||||||
host_t *me, *other;
|
|
||||||
identification_t *my_id, *other_id;
|
|
||||||
|
|
||||||
peer_cfg->get_ref(peer_cfg);
|
peer_cfg->get_ref(peer_cfg);
|
||||||
this->peer_cfg = peer_cfg;
|
this->peer_cfg = peer_cfg;
|
||||||
|
|
||||||
if (this->ike_cfg == NULL)
|
if (this->ike_cfg == NULL)
|
||||||
{
|
{
|
||||||
this->ike_cfg = peer_cfg->get_ike_cfg(peer_cfg);
|
this->ike_cfg = peer_cfg->get_ike_cfg(peer_cfg);
|
||||||
@@ -341,20 +339,30 @@ static void set_peer_cfg(private_ike_sa_t *this, peer_cfg_t *peer_cfg)
|
|||||||
/* apply values, so we are ready to initate/acquire */
|
/* apply values, so we are ready to initate/acquire */
|
||||||
if (this->my_host->is_anyaddr(this->my_host))
|
if (this->my_host->is_anyaddr(this->my_host))
|
||||||
{
|
{
|
||||||
me = this->ike_cfg->get_my_host(this->ike_cfg);
|
host_t *me = this->ike_cfg->get_my_host(this->ike_cfg);
|
||||||
|
|
||||||
set_my_host(this, me->clone(me));
|
set_my_host(this, me->clone(me));
|
||||||
}
|
}
|
||||||
if (this->other_host->is_anyaddr(this->other_host))
|
if (this->other_host->is_anyaddr(this->other_host))
|
||||||
{
|
{
|
||||||
other = this->ike_cfg->get_other_host(this->ike_cfg);
|
host_t *other = this->ike_cfg->get_other_host(this->ike_cfg);
|
||||||
|
|
||||||
set_other_host(this, other->clone(other));
|
set_other_host(this, other->clone(other));
|
||||||
}
|
}
|
||||||
my_id = this->peer_cfg->get_my_id(this->peer_cfg);
|
if (this->my_id == NULL || this->my_id->contains_wildcards(this->my_id))
|
||||||
other_id = this->peer_cfg->get_other_id(this->peer_cfg);
|
{
|
||||||
DESTROY_IF(this->my_id);
|
identification_t *my_id = this->peer_cfg->get_my_id(this->peer_cfg);
|
||||||
DESTROY_IF(this->other_id);
|
|
||||||
this->my_id = my_id->clone(my_id);
|
DESTROY_IF(this->my_id);
|
||||||
this->other_id = other_id->clone(other_id);
|
this->my_id = my_id->clone(my_id);
|
||||||
|
}
|
||||||
|
if (this->other_id == NULL || this->other_id->contains_wildcards(this->other_id))
|
||||||
|
{
|
||||||
|
identification_t *other_id = this->peer_cfg->get_other_id(this->peer_cfg);
|
||||||
|
|
||||||
|
DESTROY_IF(this->other_id);
|
||||||
|
this->other_id = other_id->clone(other_id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user