Trigger ike_updown event caused by retransmits only after reestablish() has been called
This allows listeners to migrate to the new IKE_SA with the ike_reestablish event without having to worry about an ike_updown event for the old IKE_SA.
This commit is contained in:
@@ -1713,6 +1713,10 @@ METHOD(ike_sa_t, retransmit, status_t,
|
|||||||
reestablish(this);
|
reestablish(this);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (this->state != IKE_CONNECTING)
|
||||||
|
{
|
||||||
|
charon->bus->ike_updown(charon->bus, &this->public, FALSE);
|
||||||
|
}
|
||||||
return DESTROY_ME;
|
return DESTROY_ME;
|
||||||
}
|
}
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
|
|||||||
@@ -293,10 +293,6 @@ static status_t retransmit_packet(private_task_manager_t *this, u_int32_t seqnr,
|
|||||||
if (retransmitted > this->retransmit_tries)
|
if (retransmitted > this->retransmit_tries)
|
||||||
{
|
{
|
||||||
DBG1(DBG_IKE, "giving up after %u retransmits", retransmitted - 1);
|
DBG1(DBG_IKE, "giving up after %u retransmits", retransmitted - 1);
|
||||||
if (this->ike_sa->get_state(this->ike_sa) != IKE_CONNECTING)
|
|
||||||
{
|
|
||||||
charon->bus->ike_updown(charon->bus, this->ike_sa, FALSE);
|
|
||||||
}
|
|
||||||
return DESTROY_ME;
|
return DESTROY_ME;
|
||||||
}
|
}
|
||||||
t = (u_int32_t)(this->retransmit_timeout * 1000.0 *
|
t = (u_int32_t)(this->retransmit_timeout * 1000.0 *
|
||||||
@@ -599,7 +595,7 @@ METHOD(task_manager_t, initiate, status_t,
|
|||||||
}
|
}
|
||||||
|
|
||||||
this->initiating.seqnr++;
|
this->initiating.seqnr++;
|
||||||
if (expect_response )
|
if (expect_response)
|
||||||
{
|
{
|
||||||
message->destroy(message);
|
message->destroy(message);
|
||||||
return retransmit(this, this->initiating.seqnr);
|
return retransmit(this, this->initiating.seqnr);
|
||||||
|
|||||||
@@ -257,10 +257,6 @@ METHOD(task_manager_t, retransmit, status_t,
|
|||||||
{
|
{
|
||||||
DBG1(DBG_IKE, "giving up after %d retransmits",
|
DBG1(DBG_IKE, "giving up after %d retransmits",
|
||||||
this->initiating.retransmitted - 1);
|
this->initiating.retransmitted - 1);
|
||||||
if (this->ike_sa->get_state(this->ike_sa) != IKE_CONNECTING)
|
|
||||||
{
|
|
||||||
charon->bus->ike_updown(charon->bus, this->ike_sa, FALSE);
|
|
||||||
}
|
|
||||||
return DESTROY_ME;
|
return DESTROY_ME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -282,7 +278,6 @@ METHOD(task_manager_t, retransmit, status_t,
|
|||||||
{
|
{
|
||||||
DBG1(DBG_IKE, "giving up after %d path probings",
|
DBG1(DBG_IKE, "giving up after %d path probings",
|
||||||
this->initiating.retransmitted - 1);
|
this->initiating.retransmitted - 1);
|
||||||
charon->bus->ike_updown(charon->bus, this->ike_sa, FALSE);
|
|
||||||
return DESTROY_ME;
|
return DESTROY_ME;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user