]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
Backport fix for #156.
authorRoy Marples <roy@marples.name>
Thu, 22 Jan 2009 14:19:46 +0000 (14:19 +0000)
committerRoy Marples <roy@marples.name>
Thu, 22 Jan 2009 14:19:46 +0000 (14:19 +0000)
client.c

index 864957beccf58750d18802924e58068a057f8316..d599d1bb8a5aae441c03755b88e8f5d34d644597 100644 (file)
--- a/client.c
+++ b/client.c
@@ -947,24 +947,24 @@ static int bind_dhcp(struct if_state *state, const struct options *options)
                        state->state = STATE_BOUND;
                        timerclear(&state->stop);
                } else {
-                       if (lease->rebindtime >= lease->leasetime) {
+                       if (lease->rebindtime == 0)
+                               lease->rebindtime = lease->leasetime * T2;
+                       else if (lease->rebindtime >= lease->leasetime) {
                                lease->rebindtime = lease->leasetime * T2;
                                logger(LOG_ERR,
                                       "rebind time greater than lease "
                                       "time, forcing to %u seconds",
                                       lease->rebindtime);
                        }
-                       if (lease->renewaltime > lease->rebindtime) {
+                       if (lease->renewaltime == 0)
+                               lease->renewaltime = lease->leasetime * T1;
+                       else if (lease->renewaltime > lease->rebindtime) {
                                lease->renewaltime = lease->leasetime * T1;
                                logger(LOG_ERR,
                                       "renewal time greater than rebind time, "
                                       "forcing to %u seconds",
                                       lease->renewaltime);
                        }
-                       if (!lease->renewaltime)
-                               lease->renewaltime = lease->leasetime * T1;
-                       if (!lease->rebindtime)
-                               lease->rebindtime = lease->leasetime * T2;
                        logger(LOG_INFO,
                               "leased %s for %u seconds",
                               inet_ntoa(lease->addr), lease->leasetime);