]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
use daemon(3) if available.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Tue, 26 Aug 2008 12:47:26 +0000 (12:47 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Tue, 26 Aug 2008 12:47:26 +0000 (12:47 +0000)
git-svn-id: file:///svn/unbound/trunk@1210 be551aaa-1e26-0410-a405-d3ace91eadb9

config.h.in
configure
configure.ac
daemon/unbound.c
doc/Changelog

index f3b24a448f474da4b1779f138b229a04425ac5ab..7e5a645959f8ff54a25ae492a1dc0a9312e9a9c5 100644 (file)
@@ -24,6 +24,9 @@
 /* Define to 1 if you have the `chroot' function. */
 #undef HAVE_CHROOT
 
+/* Define to 1 if you have the `daemon' function. */
+#undef HAVE_DAEMON
+
 /* Define to 1 if you have the <dlfcn.h> header file. */
 #undef HAVE_DLFCN_H
 
index c6cdeaf2e991ac1f72f508dd5ea3ef8f1bd1dfd6..bd0afe6d478e365c642e1f216f99695037ff9e88 100755 (executable)
--- a/configure
+++ b/configure
@@ -24666,7 +24666,8 @@ fi
 
 
 
-for ac_func in tzset sigprocmask fcntl getpwnam getrlimit setsid sbrk chroot kill sleep usleep random srandom recvmsg sendmsg writev setresuid setreuid setresgid setregid
+
+for ac_func in tzset sigprocmask fcntl getpwnam getrlimit setsid sbrk chroot kill sleep usleep random srandom recvmsg sendmsg writev setresuid setreuid setresgid setregid daemon
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
 { echo "$as_me:$LINENO: checking for $ac_func" >&5
index 676c96cf68c2a0bee7365dd54a018dd38025269f..6e008ebe7eda32ba3518120831ec7ab2dc9ef7b5 100644 (file)
@@ -781,7 +781,7 @@ AC_CHECK_GETADDRINFO_WITH_INCLUDES
 if test $ac_cv_func_getaddrinfo = no; then
 AC_LIBOBJ([fake-rfc2553])
 fi
-AC_CHECK_FUNCS([tzset sigprocmask fcntl getpwnam getrlimit setsid sbrk chroot kill sleep usleep random srandom recvmsg sendmsg writev setresuid setreuid setresgid setregid])
+AC_CHECK_FUNCS([tzset sigprocmask fcntl getpwnam getrlimit setsid sbrk chroot kill sleep usleep random srandom recvmsg sendmsg writev setresuid setreuid setresgid setregid daemon])
 
 # check mkdir
 AC_MSG_CHECKING([whether mkdir has one arg])
index d8eef1d8a96154a98ab4c0d9bc70df57b9fc0cee..b286a721211c9c93f588ee9ec8f5139e11b4b9bf 100644 (file)
@@ -287,15 +287,24 @@ checkoldpid(struct config_file* cfg)
 static void
 detach(struct config_file* cfg)
 {
+#ifdef HAVE_DAEMON
+       int err;
+       if(daemon(1,0)!=0) {
+               err=errno;
+               unlink(cfg->pidfile);
+               fatal_exit("daemon(3) failed: %s", strerror(err));
+       }
+#else /* !HAVE_DAEMON */
 #ifdef HAVE_WORKING_FORK
-       int fd;
+       int fd, err;
        /* Take off... */
        switch (fork()) {
                case 0:
                        break;
                case -1:
+                       err=errno;
                        unlink(cfg->pidfile);
-                       fatal_exit("fork failed: %s", strerror(errno));
+                       fatal_exit("fork failed: %s", strerror(err));
                default:
                        /* exit interactive session */
                        exit(0);
@@ -315,6 +324,7 @@ detach(struct config_file* cfg)
 #else
        (void)cfg;
 #endif /* HAVE_WORKING_FORK */
+#endif /* HAVE_DAEMON */
 }
 
 /** daemonize, drop user priviliges and chroot if needed */
index e6aeb864e24414f1e8e2f00a8ef457913b38294c..ef062a297fd46c3a295481879e22d2e4785698e5 100644 (file)
@@ -5,6 +5,7 @@
        - added scrub filter for overreaching NSEC records and unit test.
        - iana portlist update
        - use of setresuid or setreuid when available.
+       - use daemon(3) if available.
 
 25 August 2008: Wouter
        - realclean patch from Robert Edmonds.