lib: close stdin/out/err in non-terminal case

Oops, forgot this path... in the --terminal case, stdio is closed when
the user ends the terminal session, but without terminal it was left
open.

(This caused a ssh session hang in the CentOS6 CI because the file
descriptors were still open, so ssh would keep the session alive...)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This commit is contained in:
David Lamparter 2017-08-03 03:37:37 +02:00
parent 27e295b591
commit c9c8d0d189

View File

@ -688,8 +688,15 @@ void frr_run(struct thread_master *master)
thread_add_read(master, frr_daemon_ctl, NULL,
daemon_ctl_sock, &daemon_ctl_thread);
}
} else if (daemon_ctl_sock != -1) {
close(daemon_ctl_sock);
} else {
int nullfd = open("/dev/null", O_RDONLY | O_NOCTTY);
dup2(nullfd, 0);
dup2(nullfd, 1);
dup2(nullfd, 2);
close(nullfd);
if (daemon_ctl_sock != -1)
close(daemon_ctl_sock);
daemon_ctl_sock = -1;
}