From c05aa6a776ab2420a42c041a3b5d45db587fd9ef Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Tue, 30 Oct 2018 11:56:18 +0100 Subject: [PATCH] udhcpc: ensure at least one unicast renew attempt Signed-off-by: Denys Vlasenko --- networking/udhcp/d6_dhcpc.c | 5 +++-- networking/udhcp/dhcpc.c | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/networking/udhcp/d6_dhcpc.c b/networking/udhcp/d6_dhcpc.c index 66e4b6c6a..e2f8a6a9c 100644 --- a/networking/udhcp/d6_dhcpc.c +++ b/networking/udhcp/d6_dhcpc.c @@ -1738,8 +1738,9 @@ int udhcpc6_main(int argc UNUSED_PARAM, char **argv) /* note: "int timeout" will not overflow even with 0xffffffff inputs here: */ timeout = (prefix_timeout < address_timeout ? prefix_timeout : address_timeout) / 2; /* paranoia: must not be too small */ - if (timeout < 0x10) - timeout = 0x10; + /* timeout > 60 - ensures at least one unicast renew attempt */ + if (timeout < 61) + timeout = 61; /* enter bound state */ d6_run_script(packet.d6_options, packet_end, (state == REQUESTING ? "bound" : "renew")); diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c index ab3e5a463..d2f165904 100644 --- a/networking/udhcp/dhcpc.c +++ b/networking/udhcp/dhcpc.c @@ -1725,8 +1725,9 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv) move_from_unaligned32(lease_seconds, temp); lease_seconds = ntohl(lease_seconds); /* paranoia: must not be too small and not prone to overflows */ - if (lease_seconds < 0x10) - lease_seconds = 0x10; + /* timeout > 60 - ensures at least one unicast renew attempt */ + if (lease_seconds < 2 * 61) + lease_seconds = 2 * 61; //if (lease_seconds > 0x7fffffff) // lease_seconds = 0x7fffffff; //^^^not necessary since "timeout = lease_seconds / 2"