use daemon(3) if available.

git-svn-id: file:///svn/unbound/trunk@1210 be551aaa-1e26-0410-a405-d3ace91eadb9
This commit is contained in:
Wouter Wijngaards 2008-08-26 12:47:26 +00:00
parent 53fed5315c
commit 4993c646e7
5 changed files with 19 additions and 4 deletions

View 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

3
configure vendored
View File

@ -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

View 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])

View 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 */

View 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.