diff options
Diffstat (limited to 'networking')
-rw-r--r-- | networking/udhcp/dhcpc.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c index 92ebe3676..4cc42eae0 100644 --- a/networking/udhcp/dhcpc.c +++ b/networking/udhcp/dhcpc.c @@ -363,6 +363,7 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv) packet_num++; continue; } + leasefail: udhcp_run_script(NULL, "leasefail"); #if BB_MMU /* -b is not supported on NOMMU */ if (opt & OPT_b) { /* background if no lease */ @@ -399,6 +400,11 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv) udhcp_run_script(NULL, "deconfig"); change_listen_mode(LISTEN_RAW); state = INIT_SELECTING; + /* "discover...select...discover..." loops + * were seen in the wild. Treat then similarly + * to "no response to discover" case */ + if (state == REQUESTING) + goto leasefail; timeout = 0; packet_num = 0; continue; |