ike: Apply retransmission_limit before applying the jitter
This commit is contained in:
@@ -366,15 +366,15 @@ static status_t retransmit_packet(private_task_manager_t *this, uint32_t seqnr,
|
|||||||
}
|
}
|
||||||
t = (uint32_t)(this->retransmit_timeout * 1000.0 *
|
t = (uint32_t)(this->retransmit_timeout * 1000.0 *
|
||||||
pow(this->retransmit_base, retransmitted));
|
pow(this->retransmit_base, retransmitted));
|
||||||
|
if (this->retransmit_limit)
|
||||||
|
{
|
||||||
|
t = min(t, this->retransmit_limit);
|
||||||
|
}
|
||||||
if (this->retransmit_jitter)
|
if (this->retransmit_jitter)
|
||||||
{
|
{
|
||||||
max_jitter = (t / 100.0) * this->retransmit_jitter;
|
max_jitter = (t / 100.0) * this->retransmit_jitter;
|
||||||
t -= max_jitter * (random() / (RAND_MAX + 1.0));
|
t -= max_jitter * (random() / (RAND_MAX + 1.0));
|
||||||
}
|
}
|
||||||
if (this->retransmit_limit)
|
|
||||||
{
|
|
||||||
t = min(t, this->retransmit_limit);
|
|
||||||
}
|
|
||||||
if (retransmitted)
|
if (retransmitted)
|
||||||
{
|
{
|
||||||
DBG1(DBG_IKE, "sending retransmit %u of %s message ID %u, seq %u",
|
DBG1(DBG_IKE, "sending retransmit %u of %s message ID %u, seq %u",
|
||||||
|
|||||||
@@ -362,15 +362,15 @@ METHOD(task_manager_t, retransmit, status_t,
|
|||||||
timeout = (uint32_t)(this->retransmit_timeout * 1000.0 *
|
timeout = (uint32_t)(this->retransmit_timeout * 1000.0 *
|
||||||
pow(this->retransmit_base, this->initiating.retransmitted));
|
pow(this->retransmit_base, this->initiating.retransmitted));
|
||||||
|
|
||||||
|
if (this->retransmit_limit)
|
||||||
|
{
|
||||||
|
timeout = min(timeout, this->retransmit_limit);
|
||||||
|
}
|
||||||
if (this->retransmit_jitter)
|
if (this->retransmit_jitter)
|
||||||
{
|
{
|
||||||
max_jitter = (timeout / 100.0) * this->retransmit_jitter;
|
max_jitter = (timeout / 100.0) * this->retransmit_jitter;
|
||||||
timeout -= max_jitter * (random() / (RAND_MAX + 1.0));
|
timeout -= max_jitter * (random() / (RAND_MAX + 1.0));
|
||||||
}
|
}
|
||||||
if (this->retransmit_limit)
|
|
||||||
{
|
|
||||||
timeout = min(timeout, this->retransmit_limit);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user