udev-ctrl: refactor udev_ctrl_enable_receiving()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 24 Jan 2019 06:09:40 +0000 (15:09 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 19 Feb 2019 21:17:42 +0000 (06:17 +0900)
src/udev/udev-ctrl.c

index 0ed59c0..7d8ff6d 100644 (file)
@@ -116,25 +116,28 @@ int udev_ctrl_new_from_fd(struct udev_ctrl **ret, int fd) {
 }
 
 int udev_ctrl_enable_receiving(struct udev_ctrl *uctrl) {
-        int err;
-
-        if (!uctrl->bound) {
-                err = bind(uctrl->sock, &uctrl->saddr.sa, uctrl->addrlen);
-                if (err < 0 && errno == EADDRINUSE) {
-                        (void) sockaddr_un_unlink(&uctrl->saddr.un);
-                        err = bind(uctrl->sock, &uctrl->saddr.sa, uctrl->addrlen);
-                }
+        int r;
 
-                if (err < 0)
-                        return log_error_errno(errno, "Failed to bind socket: %m");
+        assert(uctrl);
 
-                err = listen(uctrl->sock, 0);
-                if (err < 0)
-                        return log_error_errno(errno, "Failed to listen: %m");
+        if (uctrl->bound)
+                return 0;
 
-                uctrl->bound = true;
-                uctrl->cleanup_socket = true;
+        r = bind(uctrl->sock, &uctrl->saddr.sa, uctrl->addrlen);
+        if (r < 0 && errno == EADDRINUSE) {
+                (void) sockaddr_un_unlink(&uctrl->saddr.un);
+                r = bind(uctrl->sock, &uctrl->saddr.sa, uctrl->addrlen);
         }
+
+        if (r < 0)
+                return log_error_errno(errno, "Failed to bind udev control socket: %m");
+
+        if (listen(uctrl->sock, 0) < 0)
+                return log_error_errno(errno, "Failed to listen udev control socket: %m");
+
+        uctrl->bound = true;
+        uctrl->cleanup_socket = true;
+
         return 0;
 }