]> sourceware.org Git - lvm2.git/commitdiff
libdaemon: set CLOEXEC flag on systemd socket
authorOndrej Kozina <okozina@redhat.com>
Fri, 30 Jan 2015 14:15:24 +0000 (15:15 +0100)
committerOndrej Kozina <okozina@redhat.com>
Mon, 2 Feb 2015 09:20:35 +0000 (10:20 +0100)
all sockets opened by a daemon or handed over by systemd
have to have CLOEXEC flag set. Otherwise we get nasty
warnings about leaking descriptors in processes spawned by
daemon.

WHATS_NEW
libdaemon/server/daemon-server.c

index 3555063459382524742c04956f7a74ec38015f8e..cd4abfee208f825c1f333a8a2c11a373b7c9779d 100644 (file)
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.117 - 
 ====================================
+  set CLOEXEC flag on file descriptors originating in libdaemon
 
 Version 2.02.116 - 30th January 2015
 ====================================
index 3dffdbb0bd0e0e88192a707f7d1e527f0a115016..5ccf4e98cefb7638d5dbb2bc61201c7b03b3cf4b 100644 (file)
@@ -221,9 +221,7 @@ static int _open_socket(daemon_state s)
                goto error;
        }
 
-       /* Set Close-on-exec & non-blocking */
-       if (fcntl(fd, F_SETFD, 1))
-               fprintf(stderr, "setting CLOEXEC on socket fd %d failed: %s\n", fd, strerror(errno));
+       /* Set non-blocking */
        if (fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) | O_NONBLOCK))
                fprintf(stderr, "setting O_NONBLOCK on socket fd %d failed: %s\n", fd, strerror(errno));
 
@@ -572,6 +570,10 @@ void daemon_start(daemon_state s)
                        failed = 1;
        }
 
+       /* Set Close-on-exec */
+       if (fcntl(s.socket_fd, F_SETFD, 1))
+               fprintf(stderr, "setting CLOEXEC on socket fd %d failed: %s\n", s.socket_fd, strerror(errno));
+
        /* Signal parent, letting them know we are ready to go. */
        if (!s.foreground)
                kill(getppid(), SIGTERM);
This page took 0.042512 seconds and 5 git commands to generate.