mirror of
https://gitlab.com/chrony/chrony.git
synced 2025-12-03 17:45:07 -05:00
main: close pipe in grandparent process
Close the other end of the pipe in the grandparent process before exit to avoid valgrind error. Also, in the daemon process avoid closing the pipe for second time in the 0-1024 close() loop to avoid another error.
This commit is contained in:
8
main.c
8
main.c
@@ -339,8 +339,11 @@ go_daemon(void)
|
||||
/* Don't exit before the 'parent' */
|
||||
waitpid(pid, NULL, 0);
|
||||
|
||||
close(pipefd[1]);
|
||||
r = read(pipefd[0], message, sizeof (message));
|
||||
|
||||
close(pipefd[0]);
|
||||
close(pipefd[1]);
|
||||
|
||||
if (r != 1 || message[0] != '\0') {
|
||||
if (r > 1) {
|
||||
/* Print the error message from the child */
|
||||
@@ -351,8 +354,6 @@ go_daemon(void)
|
||||
} else
|
||||
exit(0);
|
||||
} else {
|
||||
close(pipefd[0]);
|
||||
|
||||
setsid();
|
||||
|
||||
/* Do 2nd fork, as-per recommended practice for launching daemons. */
|
||||
@@ -362,6 +363,7 @@ go_daemon(void)
|
||||
LOG_FATAL("fork() failed : %s", strerror(errno));
|
||||
} else if (pid > 0) {
|
||||
/* In the 'parent' */
|
||||
close(pipefd[0]);
|
||||
close(pipefd[1]);
|
||||
exit(0);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user