]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-dhcp-client: fix renew/rebind timeout calculation to avoid infinite loop
authorDan Streetman <ddstreet@canonical.com>
Tue, 15 Dec 2020 22:59:12 +0000 (17:59 -0500)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 16 Dec 2020 10:49:31 +0000 (19:49 +0900)
unfortunately I missed adding the timeout to 'now' which results in
an endless loop of renewal timeouts.

Fixes: 3a23834d6b0da391c1ba9cb79a7d7deea7125f4b
src/libsystemd-network/sd-dhcp-client.c

index 0c2eb91ae33715f338e671c32b31326fc5cc683f..939dbac5bb865f1d59cda513faeb1f9766f70192 100644 (file)
@@ -759,7 +759,7 @@ static usec_t client_compute_request_timeout(usec_t now, uint64_t attempt) {
  * Note that while the default T1/T2 initial times do have random 'fuzz' applied,
  * the RFC sec 4.4.5 does not mention adding any fuzz to retries. */
 static usec_t client_compute_reacquisition_timeout(usec_t now, usec_t expire) {
-        return MAX(usec_sub_unsigned(expire, now) / 2, 60 * USEC_PER_SEC);
+        return now + MAX(usec_sub_unsigned(expire, now) / 2, 60 * USEC_PER_SEC);
 }
 
 static int cmp_uint8(const uint8_t *a, const uint8_t *b) {