diff options
author | ume <ume@FreeBSD.org> | 2003-08-17 17:29:54 +0000 |
---|---|---|
committer | ume <ume@FreeBSD.org> | 2003-08-17 17:29:54 +0000 |
commit | a89d80761c211ae91acf3bbb1f6325202e1d2b40 (patch) | |
tree | 27670eaed3f026bfd9c1dbfeae33a9e479a139c1 | |
parent | a83c66546091896a9b16340b562592c60f272e9b (diff) | |
download | FreeBSD-src-a89d80761c211ae91acf3bbb1f6325202e1d2b40.zip FreeBSD-src-a89d80761c211ae91acf3bbb1f6325202e1d2b40.tar.gz |
daemon() has to be called prior to file descriptor setups
(otherwise file descriptors could be closed mistakenly)
Obtained from: KAME
MFC after: 1 week
-rw-r--r-- | usr.sbin/route6d/route6d.c | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/usr.sbin/route6d/route6d.c b/usr.sbin/route6d/route6d.c index 696a9bc..e8d06bb 100644 --- a/usr.sbin/route6d/route6d.c +++ b/usr.sbin/route6d/route6d.c @@ -349,6 +349,14 @@ main(argc, argv) nflag = 1; fprintf(stderr, "No kernel update is allowed\n"); } + + if (dflag == 0) { + if (daemon(0, 0) < 0) { + fatal("daemon"); + /*NOTREACHED*/ + } + } + openlog(progname, LOG_NDELAY|LOG_PID, LOG_DAEMON); logopened++; @@ -389,21 +397,6 @@ main(argc, argv) if (dflag) ifrtdump(0); - if (dflag == 0) { -#if 1 - if (daemon(0, 0) < 0) { - fatal("daemon"); - /*NOTREACHED*/ - } -#else - if (fork()) - exit(0); - if (setsid() < 0) { - fatal("setid"); - /*NOTREACHED*/ - } -#endif - } pid = getpid(); if ((pidfile = fopen(ROUTE6D_PID, "w")) != NULL) { fprintf(pidfile, "%d\n", pid); |