diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2018-09-28 14:44:09 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2018-09-28 14:44:09 +0200 |
commit | aae428f0bf0fcd6cd0a2503b3a50de43785b8fd0 (patch) | |
tree | ea72c9526278a93caa1d73c1a469e00fba3b980a | |
parent | 702d865fe6ab84c1179275beda6c31f7adaeafa1 (diff) | |
download | busybox-aae428f0bf0fcd6cd0a2503b3a50de43785b8fd0.tar.gz |
udhcpc: give SIGUSR1-induced renew one chance of unicast renew
The caps were inconsistent: timeout to renew was capped at 20 seconds,
and any renews with timeout <= 60 seconds were forced to broadcast.
function old new delta
udhcpc_main 2683 2680 -3
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | networking/udhcp/d6_dhcpc.c | 8 | ||||
-rw-r--r-- | networking/udhcp/dhcpc.c | 8 |
2 files changed, 6 insertions, 10 deletions
diff --git a/networking/udhcp/d6_dhcpc.c b/networking/udhcp/d6_dhcpc.c index ed2255ef3..66e4b6c6a 100644 --- a/networking/udhcp/d6_dhcpc.c +++ b/networking/udhcp/d6_dhcpc.c @@ -1405,7 +1405,7 @@ int udhcpc6_main(int argc UNUSED_PARAM, char **argv) case RENEW_REQUESTED: /* manual (SIGUSR1) renew */ case_RENEW_REQUESTED: case RENEWING: - if (timeout > 60) { + if (timeout >= 60) { /* send an unicast renew request */ /* Sometimes observed to fail (EADDRNOTAVAIL) to bind * a new UDP socket for sending inside send_renew. @@ -1465,11 +1465,9 @@ int udhcpc6_main(int argc UNUSED_PARAM, char **argv) * For the second case, must make sure timeout * is not too big, or else we can send * futile renew requests for hours. - * (Ab)use -A TIMEOUT value (usually 20 sec) - * as a cap on the timeout. */ - if (timeout > tryagain_timeout) - timeout = tryagain_timeout; + if (timeout > 60) + timeout = 60; goto case_RENEW_REQUESTED; } /* Start things over */ diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c index 0310663e0..ab3e5a463 100644 --- a/networking/udhcp/dhcpc.c +++ b/networking/udhcp/dhcpc.c @@ -1519,7 +1519,7 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv) case RENEW_REQUESTED: /* manual (SIGUSR1) renew */ case_RENEW_REQUESTED: case RENEWING: - if (timeout > 60) { + if (timeout >= 60) { /* send an unicast renew request */ /* Sometimes observed to fail (EADDRNOTAVAIL) to bind * a new UDP socket for sending inside send_renew. @@ -1592,11 +1592,9 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv) * For the second case, must make sure timeout * is not too big, or else we can send * futile renew requests for hours. - * (Ab)use -A TIMEOUT value (usually 20 sec) - * as a cap on the timeout. */ - if (timeout > tryagain_timeout) - timeout = tryagain_timeout; + if (timeout > 60) + timeout = 60; goto case_RENEW_REQUESTED; } /* Start things over */ |