From: Lennart Poettering Date: Mon, 25 Sep 2023 14:04:01 +0000 (+0200) Subject: varlink: move O_NONBLOCK setting to varlink_server_listen_fd(), and set O_CLOEXEC too X-Git-Tag: v255-rc1~437 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a4edf0335d9d07dabe0e8ca4560fafb934d4dffd;p=thirdparty%2Fsystemd.git 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. --- diff --git a/src/shared/varlink.c b/src/shared/varlink.c index fd28655c5a0..132903df2d9 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;