summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko2018-09-28 14:44:09 +0200
committerDenys Vlasenko2018-09-28 14:44:09 +0200
commitaae428f0bf0fcd6cd0a2503b3a50de43785b8fd0 (patch)
treeea72c9526278a93caa1d73c1a469e00fba3b980a
parent702d865fe6ab84c1179275beda6c31f7adaeafa1 (diff)
downloadbusybox-aae428f0bf0fcd6cd0a2503b3a50de43785b8fd0.zip
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.c8
-rw-r--r--networking/udhcp/dhcpc.c8
2 files changed, 6 insertions, 10 deletions
diff --git a/networking/udhcp/d6_dhcpc.c b/networking/udhcp/d6_dhcpc.c
index ed2255e..66e4b6c 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 0310663..ab3e5a4 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 */