From: Tobias Brunner Date: Fri, 26 May 2017 16:16:40 +0000 (+0200) Subject: ike: Apply retransmission_limit before applying the jitter X-Git-Tag: 5.5.3~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=00d547119e8610302013ed1d91fb8c88664d7930;p=thirdparty%2Fstrongswan.git ike: Apply retransmission_limit before applying the jitter --- diff --git a/src/libcharon/sa/ikev1/task_manager_v1.c b/src/libcharon/sa/ikev1/task_manager_v1.c index 89077b013d..48ec3e7f57 100644 --- a/src/libcharon/sa/ikev1/task_manager_v1.c +++ b/src/libcharon/sa/ikev1/task_manager_v1.c @@ -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 * pow(this->retransmit_base, retransmitted)); + if (this->retransmit_limit) + { + t = min(t, this->retransmit_limit); + } if (this->retransmit_jitter) { max_jitter = (t / 100.0) * this->retransmit_jitter; t -= max_jitter * (random() / (RAND_MAX + 1.0)); } - if (this->retransmit_limit) - { - t = min(t, this->retransmit_limit); - } if (retransmitted) { DBG1(DBG_IKE, "sending retransmit %u of %s message ID %u, seq %u", diff --git a/src/libcharon/sa/ikev2/task_manager_v2.c b/src/libcharon/sa/ikev2/task_manager_v2.c index d215596d2d..c2ddbc5886 100644 --- a/src/libcharon/sa/ikev2/task_manager_v2.c +++ b/src/libcharon/sa/ikev2/task_manager_v2.c @@ -362,15 +362,15 @@ METHOD(task_manager_t, retransmit, status_t, timeout = (uint32_t)(this->retransmit_timeout * 1000.0 * pow(this->retransmit_base, this->initiating.retransmitted)); + if (this->retransmit_limit) + { + timeout = min(timeout, this->retransmit_limit); + } if (this->retransmit_jitter) { max_jitter = (timeout / 100.0) * this->retransmit_jitter; timeout -= max_jitter * (random() / (RAND_MAX + 1.0)); } - if (this->retransmit_limit) - { - timeout = min(timeout, this->retransmit_limit); - } } else {