]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
varlink: move O_NONBLOCK setting to varlink_server_listen_fd(), and set O_CLOEXEC too
authorLennart Poettering <lennart@poettering.net>
Mon, 25 Sep 2023 14:04:01 +0000 (16:04 +0200)
committerLennart Poettering <lennart@poettering.net>
Mon, 25 Sep 2023 21:27:04 +0000 (23:27 +0200)
Let's move setting of O_NONBLOCK into varlink_server_listen_fd() and out
of varlink_server_create_listen_fd_socket(). The latter has two callers:
varlink_server_listen_fd() and varlink_server_listen_address(), which
guarantees O_CLOEXEC+O_NONBLOCK anyway, hence no neet to repeat the
logic.

src/shared/varlink.c

index fd28655c5a084010ae3c4b05be2ad7bbd5dddfeb..132903df2d9039ed1cb2f484f4b8cae45978f31b 100644 (file)
@@ -2682,10 +2682,6 @@ static int varlink_server_create_listen_fd_socket(VarlinkServer *s, int fd, Varl
         assert(fd >= 0);
         assert(ret_ss);
 
-        r = fd_nonblock(fd, true);
-        if (r < 0)
-                return r;
-
         ss = new(VarlinkServerSocket, 1);
         if (!ss)
                 return log_oom_debug();
@@ -2716,6 +2712,14 @@ int varlink_server_listen_fd(VarlinkServer *s, int fd) {
         assert_return(s, -EINVAL);
         assert_return(fd >= 0, -EBADF);
 
+        r = fd_nonblock(fd, true);
+        if (r < 0)
+                return r;
+
+        r = fd_cloexec(fd, true);
+        if (r < 0)
+                return r;
+
         r = varlink_server_create_listen_fd_socket(s, fd, &ss);
         if (r < 0)
                 return r;