--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
-@@ -352,7 +352,7 @@ int udhcpc_main(int argc ATTRIBUTE_UNUSE
+@@ -380,7 +380,7 @@ int udhcpc_main(int argc UNUSED_PARAM, c
switch (state) {
case INIT_SELECTING:
+ if (!discover_retries || packet_num < discover_retries) {
if (packet_num == 0)
xid = random_xid();
-
-@@ -382,7 +382,7 @@ int udhcpc_main(int argc ATTRIBUTE_UNUSE
+ /* broadcast */
+@@ -409,7 +409,7 @@ int udhcpc_main(int argc UNUSED_PARAM, c
+ packet_num = 0;
continue;
- case RENEW_REQUESTED:
case REQUESTING:
- if (packet_num < discover_retries) {
+ if (!discover_retries || packet_num < discover_retries) {
- /* send request packet */
- if (state == RENEW_REQUESTED) /* unicast */
- send_renew(xid, server_addr, requested_ip);
+ /* send broadcast select packet */
+ send_select(xid, server_addr, requested_ip);
+ timeout = discover_timeout;