]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
added -T keepstderr to keep stderr open when daemonizing [RT #43736]
authorMark Andrews <marka@isc.org>
Sun, 4 Dec 2016 23:38:16 +0000 (10:38 +1100)
committerMark Andrews <marka@isc.org>
Sun, 4 Dec 2016 23:38:16 +0000 (10:38 +1100)
bin/named/include/named/globals.h
bin/named/main.c
bin/named/unix/os.c

index c95350ce55b6873f0a0d435d47f700388675c077..dcc713f8104b685251cd473d8494ab5cfa1fa09a 100644 (file)
@@ -171,6 +171,7 @@ EXTERN isc_boolean_t                ns_g_dropedns           INIT(ISC_FALSE);
 EXTERN isc_boolean_t           ns_g_noedns             INIT(ISC_FALSE);
 EXTERN isc_boolean_t           ns_g_nosoa              INIT(ISC_FALSE);
 EXTERN isc_boolean_t           ns_g_noaa               INIT(ISC_FALSE);
+EXTERN isc_boolean_t           ns_g_keepstderr         INIT(ISC_FALSE);
 EXTERN unsigned int            ns_g_delay              INIT(0);
 EXTERN isc_boolean_t           ns_g_nonearest          INIT(ISC_FALSE);
 EXTERN isc_boolean_t           ns_g_notcp              INIT(ISC_FALSE);
index a9fe459496f04032d5d703825d39381b8c50999c..00002a9eead20cc9a1f36f891ba175be12c0fe9b 100644 (file)
@@ -643,6 +643,9 @@ parse_command_line(int argc, char *argv[]) {
                        else if (!strncmp(isc_commandline_argument, "tat=", 4))
                                ns_g_tat_interval =
                                           atoi(isc_commandline_argument + 4);
+                       else if (!strcmp(isc_commandline_argument,
+                                        "keepstderr"))
+                               ns_g_keepstderr = ISC_TRUE;
                        else
                                fprintf(stderr, "unknown -T flag '%s\n",
                                        isc_commandline_argument);
index e24be1b814783016a3b398d7618123f2f11a3481..27705c1cf4f0bd1092a39b3c61a584e56eb23da1 100644 (file)
@@ -39,6 +39,7 @@
 #include <isc/strerror.h>
 #include <isc/string.h>
 
+#include <named/globals.h>
 #include <named/main.h>
 #include <named/os.h>
 #ifdef HAVE_LIBSCF
@@ -453,7 +454,7 @@ ns_os_daemonize(void) {
                        (void)close(STDOUT_FILENO);
                        (void)dup2(devnullfd, STDOUT_FILENO);
                }
-               if (devnullfd != STDERR_FILENO) {
+               if (devnullfd != STDERR_FILENO && !ns_g_keepstderr) {
                        (void)close(STDERR_FILENO);
                        (void)dup2(devnullfd, STDERR_FILENO);
                }