-diff -ur busybox.old/networking/udhcp/dhcpc.c busybox.dev/networking/udhcp/dhcpc.c
---- busybox.old/networking/udhcp/dhcpc.c 2006-11-10 00:17:26.000000000 +0100
-+++ busybox.dev/networking/udhcp/dhcpc.c 2006-11-10 00:17:10.000000000 +0100
-@@ -330,7 +330,7 @@
- /* timeout dropped to zero */
+--- a/networking/udhcp/dhcpc.c
++++ b/networking/udhcp/dhcpc.c
+@@ -1017,7 +1017,7 @@ int udhcpc_main(int argc UNUSED_PARAM, c
+
switch (state) {
case INIT_SELECTING:
-- if (packet_num < client_config.retries) {
-+ if (!client_config.retries || (packet_num < client_config.retries)) {
+- if (packet_num < discover_retries) {
++ if (!discover_retries || packet_num < discover_retries) {
if (packet_num == 0)
xid = random_xid();
-
-@@ -355,7 +355,7 @@
- break;
- case RENEW_REQUESTED:
+ /* broadcast */
+@@ -1046,7 +1046,7 @@ int udhcpc_main(int argc UNUSED_PARAM, c
+ packet_num = 0;
+ continue;
case REQUESTING:
-- if (packet_num < client_config.retries) {
-+ if (!client_config.retries || (packet_num < client_config.retries)) {
- /* send request packet */
- if (state == RENEW_REQUESTED)
- send_renew(xid, server_addr, requested_ip); /* unicast */
+- if (packet_num < discover_retries) {
++ if (!discover_retries || packet_num < discover_retries) {
+ /* send broadcast select packet */
+ send_select(xid, server_addr, requested_ip);
+ timeout = discover_timeout;