X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flibudev%2Flibudev-monitor.c;h=0c554bbac49c041911caf55d7b4dacc3b031f85e;hp=3f1fee7f7eb0c03c1a7587deb462b6f0556caabc;hb=a4445e88cece0444c66d70876b03065158dd4685;hpb=0a6f50c0afdfc434b492493bd9efab20cbee8623 diff --git a/src/libudev/libudev-monitor.c b/src/libudev/libudev-monitor.c index 3f1fee7f7..0c554bbac 100644 --- a/src/libudev/libudev-monitor.c +++ b/src/libudev/libudev-monitor.c @@ -23,12 +23,8 @@ #include #include #include -#include #include -#include #include -#include -#include #include #include @@ -749,12 +745,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; }