diff options
Diffstat (limited to 'packages/glibc/2.16.0/0018-nscd-one-fork.patch')
-rw-r--r-- | packages/glibc/2.16.0/0018-nscd-one-fork.patch | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/packages/glibc/2.16.0/0018-nscd-one-fork.patch b/packages/glibc/2.16.0/0018-nscd-one-fork.patch new file mode 100644 index 00000000..0d72f07d --- /dev/null +++ b/packages/glibc/2.16.0/0018-nscd-one-fork.patch @@ -0,0 +1,46 @@ +only fork one to assist in stop-start-daemon assumptions about daemon behavior + +http://bugs.gentoo.org/190785 + +--- + nscd/nscd.c | 15 +++------------ + 1 file changed, 3 insertions(+), 12 deletions(-) + +--- a/nscd/nscd.c ++++ b/nscd/nscd.c +@@ -203,6 +203,9 @@ + exit (0); + } + ++ if (write_pid (_PATH_NSCDPID) < 0) ++ dbg_log ("%s: %s", _PATH_NSCDPID, strerror (errno)); ++ + int nullfd = open (_PATH_DEVNULL, O_RDWR); + if (nullfd != -1) + { +@@ -252,15 +255,6 @@ + for (i = min_close_fd; i < getdtablesize (); i++) + close (i); + +- if (run_mode == RUN_DAEMONIZE) +- { +- pid = fork (); +- if (pid == -1) +- error (EXIT_FAILURE, errno, _("cannot fork")); +- if (pid != 0) +- exit (0); +- } +- + setsid (); + + if (chdir ("/") != 0) +@@ -269,9 +263,6 @@ + + openlog ("nscd", LOG_CONS | LOG_ODELAY, LOG_DAEMON); + +- if (write_pid (_PATH_NSCDPID) < 0) +- dbg_log ("%s: %s", _PATH_NSCDPID, strerror (errno)); +- + if (!init_logfile ()) + dbg_log (_("Could not create log file")); + |