Use safe_sendto where necessary, and check for short writes.

Also, change many log_lines to log_errors, mostly in ifset.c.
This commit is contained in:
Nicholas J. Kain
2014-04-07 04:15:02 -04:00
parent 650da6a7fd
commit 6804be2277
4 changed files with 113 additions and 108 deletions

View File

@ -335,9 +335,14 @@ static ssize_t send_dhcp_raw(struct dhcpmsg *payload)
memcpy(da.sll_addr, "\xff\xff\xff\xff\xff\xff", 6);
ret = safe_sendto(fd, (const char *)&iudmsg, iud_len, 0,
(struct sockaddr *)&da, sizeof da);
if (ret < 0)
log_error("%s: (%s) sendto failed: %s", client_config.interface,
__func__, strerror(errno));
if (ret < 0 || (size_t)ret != iud_len) {
if (ret < 0)
log_error("%s: (%s) sendto failed: %s", client_config.interface,
__func__, strerror(errno));
else
log_error("%s: (%s) sendto short write: %z < %zu",
client_config.interface, __func__, ret, iud_len);
}
close(fd);
return ret;
}