From: Roy Marples Date: Fri, 20 Nov 2009 14:35:36 +0000 (+0000) Subject: Small code optimisation. X-Git-Tag: v5.1.4~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9ca488bb6d7fe0311db4389613d37f3019ccc493;p=thirdparty%2Fdhcpcd.git Small code optimisation. --- diff --git a/dhcp.c b/dhcp.c index 67f98724..9f1ad7b6 100644 --- a/dhcp.c +++ b/dhcp.c @@ -1393,4 +1393,6 @@ get_lease(struct dhcp_lease *lease, const struct dhcp_message *dhcp) lease->renewaltime = 0; if (get_option_uint32(&lease->rebindtime, dhcp, DHO_REBINDTIME) != 0) lease->rebindtime = 0; + if (get_option_addr(&lease->server, dhcp, DHO_SERVERID) != 0) + lease->server.s_addr = INADDR_ANY; } diff --git a/dhcpcd.c b/dhcpcd.c index 7d052399..7b1f0921 100644 --- a/dhcpcd.c +++ b/dhcpcd.c @@ -518,10 +518,9 @@ handle_dhcp(struct interface *iface, struct dhcp_message **dhcpp) { lease->frominfo = 0; lease->addr.s_addr = dhcp->yiaddr; - lease->server.s_addr = INADDR_ANY; - if (type != 0) - get_option_addr(&lease->server, - dhcp, DHO_SERVERID); + if (type == 0 || + get_option_addr(&lease->server, dhcp, DHO_SERVERID) != 0) + lease->server.s_addr = INADDR_ANY; log_dhcp(LOG_INFO, "offered", iface, dhcp); free(state->offer); state->offer = dhcp; @@ -574,12 +573,8 @@ handle_dhcp(struct interface *iface, struct dhcp_message **dhcpp) } lease->frominfo = 0; - lease->addr.s_addr = dhcp->yiaddr; - lease->server.s_addr = INADDR_ANY; - if (type != 0) - get_option_addr(&lease->server, dhcp, DHO_SERVERID); - delete_timeout(NULL, iface); + /* We now have an offer, so close the DHCP sockets. * This allows us to safely ARP when broken DHCP servers send an ACK * follows by an invalid NAK. */