From: Michał Kępień Date: Thu, 26 Sep 2019 11:53:03 +0000 (+0200) Subject: Prevent unbuffered stderr I/O on Windows X-Git-Tag: v9.14.7~10^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b440d30a78068a4017337690f9811b95ed460d21;p=thirdparty%2Fbind9.git Prevent unbuffered stderr I/O on Windows Make stderr fully buffered on Windows to improve named performance when it is logging to stderr, which happens e.g. in system tests. Note that: - line buffering (_IOLBF) is unavailable on Windows, - fflush() is called anyway after each log message gets written to the default stderr logging channels created by libisc. (cherry picked from commit c72da3497d821c06a9b641b1c8544f957c726238) --- diff --git a/bin/named/main.c b/bin/named/main.c index c64fb0082b9..7e4273add8f 100644 --- a/bin/named/main.c +++ b/bin/named/main.c @@ -1363,6 +1363,17 @@ main(int argc, char *argv[]) { (void) ProfilerStart(NULL); #endif +#ifdef WIN32 + /* + * Prevent unbuffered I/O from crippling named performance on Windows + * when it is logging to stderr (e.g. in system tests). Use full + * buffering (_IOFBF) as line buffering (_IOLBF) is unavailable on + * Windows and fflush() is called anyway after each log message gets + * written to the default stderr logging channels created by libisc. + */ + setvbuf(stderr, NULL, _IOFBF, BUFSIZ); +#endif + /* * Record version in core image. * strings named.core | grep "named version:"