libudev: monitor - fix error path in send_device

Return -errno rather than -1 in case sendmsg() fails.

(cherry picked from commit a4445e88ce)
This commit is contained in:
Tom Gundersen
2015-03-15 07:32:15 -04:00
committed by Zbigniew Jędrzejewski-Szmek
parent 4acdc3835b
commit 317e24365d
+9 -1
View File
@@ -749,12 +749,20 @@ int udev_monitor_send_device(struct udev_monitor *udev_monitor,
* If we send to a multicast group, we will get
* ECONNREFUSED, which is expected.
*/
if (destination != NULL)
if (destination)
smsg.msg_name = &destination->snl;
else
smsg.msg_name = &udev_monitor->snl_destination;
smsg.msg_namelen = sizeof(struct sockaddr_nl);
count = sendmsg(udev_monitor->sock, &smsg, 0);
if (count < 0) {
if (!destination && errno == ECONNREFUSED) {
log_debug("passed unknown number of bytes to netlink monitor %p", udev_monitor);
return 0;
} else
return -errno;
}
log_debug("passed %zi bytes to netlink monitor %p", count, udev_monitor);
return count;
}