]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - utils/mountd/mountd.c
2001-10-11 Chip Salzenberg <chip@pobox.com>
[nfs-utils.git] / utils / mountd / mountd.c
index e93f0ba73121d017946697accf2cb98d6d4165be..73f9f66c074d3328309920cc63affe24ed8103a4 100644 (file)
@@ -484,6 +484,13 @@ main(int argc, char **argv)
        /* WARNING: the following works on Linux and SysV, but not BSD! */
        sigaction(SIGCHLD, &sa, NULL);
 
+       /* Daemons should close all extra filehandles ... *before* RPC init. */
+       if (!foreground) {
+               int fd = sysconf (_SC_OPEN_MAX);
+               while (--fd > 2)
+                       (void) close(fd);
+       }
+
        if (nfs_version & 0x1)
                rpc_init("mountd", MOUNTPROG, MOUNTVERS,
                         mount_dispatch, port);
@@ -512,17 +519,11 @@ main(int argc, char **argv)
                /* Now we remove ourselves from the foreground.
                   Redirect stdin/stdout/stderr first. */
                {
-                       int fd, fdmax;
-
-                       fd = open("/dev/null", O_RDWR);
+                       int fd = open("/dev/null", O_RDWR);
                        (void) dup2(fd, 0);
                        (void) dup2(fd, 1);
                        (void) dup2(fd, 2);
-
-                       fdmax = sysconf (_SC_OPEN_MAX);
-                       for (fd = 3; fd < fdmax; fd++) {
-                               close (fd);
-                       }
+                       if (fd > 2) (void) close(fd);
                }
                setsid();
                xlog_background();