From ba1a8fd8c7c3542d9b61ad06153d6fbd3c78d91b Mon Sep 17 00:00:00 2001 From: Paul Kulchenko Date: Mon, 25 Jul 2022 17:02:11 -0700 Subject: [PATCH] Fix stderr being improperly closed during daemonization This may happen when ProgramLogPath is used after a file descriptor is already used by an earlier call (for example, to open an SQLite file). --- tool/net/redbean.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tool/net/redbean.c b/tool/net/redbean.c index b9bba8c9b..e2623627c 100644 --- a/tool/net/redbean.c +++ b/tool/net/redbean.c @@ -7305,12 +7305,11 @@ void RedBean(int argc, char *argv[]) { -1, 0))); if (daemonize) { for (int i = 0; i < 256; ++i) { - if (!IsServerFd(i)) { - close(i); - } + close(i); } open("/dev/null", O_RDONLY); open("/dev/null", O_WRONLY); + open("/dev/null", O_WRONLY); } zpath = GetProgramExecutableName(); CHECK_NE(-1, (zfd = open(zpath, O_RDONLY)));