X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=libudev%2Flibudev-ctrl.c;h=61e02433834e5a73e1d88748652230fd38925c1c;hp=7fa2d1d535cd7ad38c49b75d34f77ba37518e129;hb=1547687a83334b056fdf06ed0c5676e948eafb30;hpb=7459bcdc8d12fdb217efd4a27a509f9f87ec7b1e;ds=sidebyside diff --git a/libudev/libudev-ctrl.c b/libudev/libudev-ctrl.c index 7fa2d1d53..61e024338 100644 --- a/libudev/libudev-ctrl.c +++ b/libudev/libudev-ctrl.c @@ -91,7 +91,7 @@ struct udev_ctrl *udev_ctrl_new_from_socket_fd(struct udev *udev, const char *so return NULL; if (fd < 0) { - uctrl->sock = socket(AF_LOCAL, SOCK_SEQPACKET|SOCK_CLOEXEC, 0); + uctrl->sock = socket(AF_LOCAL, SOCK_SEQPACKET|SOCK_NONBLOCK|SOCK_CLOEXEC, 0); if (uctrl->sock < 0) { err(udev, "error getting socket: %m\n"); udev_ctrl_unref(uctrl); @@ -184,8 +184,10 @@ struct udev_ctrl_connection *udev_ctrl_get_connection(struct udev_ctrl *uctrl) conn->refcount = 1; conn->uctrl = uctrl; - conn->sock = accept4(uctrl->sock, NULL, NULL, SOCK_CLOEXEC); + conn->sock = accept4(uctrl->sock, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK); if (conn->sock < 0) { + if (errno != EINTR) + err(uctrl->udev, "unable to receive ctrl connection: %m\n"); free(conn); return NULL; }