From 449fb2fb5917739b2cf7eee3f1759e7032e49036 Mon Sep 17 00:00:00 2001 From: Paul Kulchenko Date: Fri, 5 Aug 2022 14:57:17 -0700 Subject: [PATCH] Fix stderr being improperly closed during daemonization (#513) 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 c32594f34..360bc3ef5 100644 --- a/tool/net/redbean.c +++ b/tool/net/redbean.c @@ -7320,12 +7320,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)));