lease->addr.s_addr = dhcp->yiaddr;
lease->server.s_addr = INADDR_ANY;
if (type != 0)
- get_option_addr(&lease->server.s_addr, dhcp, DHO_SERVERID);
+ get_option_addr(&lease->server.s_addr,
+ dhcp, DHO_SERVERID);
log_dhcp(LOG_INFO, "offered", iface, dhcp);
free(state->offer);
state->offer = dhcp;
lease->frominfo = 0;
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. */
+ close_sockets(iface);
+
if (ifo->options & DHCPCD_ARP &&
iface->addr.s_addr != state->offer->yiaddr)
{