From a4edf0335d9d07dabe0e8ca4560fafb934d4dffd Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Sep 2023 16:04:01 +0200 Subject: [PATCH] varlink: move O_NONBLOCK setting to varlink_server_listen_fd(), and set O_CLOEXEC too 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 | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/shared/varlink.c b/src/shared/varlink.c index fd28655c5a..132903df2d 100644 --- a/src/shared/varlink.c +++ b/src/shared/varlink.c @@ -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; -- 2.25.1