From 3db149b42e5b0aadccb7f35519cde2c96bf2314b Mon Sep 17 00:00:00 2001 From: Henrik Persson Date: Wed, 5 Sep 2012 14:16:45 +0200 Subject: [PATCH] Fix corner case with dhcp timeouts If t1 >= t2 timeout then only t2 timer should be scheduled. This can happen when a sub 1 minute lease is received. --- src/core/dhcp.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/core/dhcp.c b/src/core/dhcp.c index 41acbfff..071190d6 100644 --- a/src/core/dhcp.c +++ b/src/core/dhcp.c @@ -962,6 +962,11 @@ dhcp_bind(struct netif *netif) LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_bind(): set request timeout %"U32_F" msecs\n", dhcp->offered_t2_rebind*1000)); } + /* If we have sub 1 minute lease, t2 and t1 will kick in at the same time. */ + if (dhcp->t1_timeout >= dhcp->t2_timeout && dhcp->t2_timeout > 0) { + dhcp->t1_timeout = 0; + } + if (dhcp->subnet_mask_given) { /* copy offered network mask */ ip_addr_copy(sn_mask, dhcp->offered_sn_mask);