From: Michael R Sweet Date: Tue, 27 May 2025 15:49:55 +0000 (-0400) Subject: Make sure to reopen error log if server name is being substituted (Issue #1277) X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b037e19f7396da0d9d105028d549af328e2f0fb0;p=thirdparty%2Fcups.git Make sure to reopen error log if server name is being substituted (Issue #1277) --- diff --git a/scheduler/conf.c b/scheduler/conf.c index 73c34bc93c..da5fd54a2f 100644 --- a/scheduler/conf.c +++ b/scheduler/conf.c @@ -988,6 +988,17 @@ cupsdReadConfiguration(void) ServerNameIsIP = !*slash; + /* + * If the ErrorLog value contains "%s", close the current log file (if any) + * so that the proper ServerName value is used when logging. + */ + + if (ErrorLog && strstr(ErrorLog, "%s") && ErrorFile && ErrorFile != LogStderr) + { + cupsFileClose(ErrorFile); + ErrorFile = NULL; + } + /* * Make sure ServerAdmin is initialized... */ diff --git a/scheduler/log.c b/scheduler/log.c index 5eec7abb90..159a8313aa 100644 --- a/scheduler/log.c +++ b/scheduler/log.c @@ -149,11 +149,12 @@ cupsdCheckLogFile(cups_file_t **lf, /* IO - Log file */ cupsConcatString(filename, "/", sizeof(filename)); } else + { filename[0] = '\0'; + } - for (logptr = logname, ptr = filename + strlen(filename); - *logptr && ptr < (filename + sizeof(filename) - 1); - logptr ++) + for (logptr = logname, ptr = filename + strlen(filename); *logptr && ptr < (filename + sizeof(filename) - 1); logptr ++) + { if (*logptr == '%') { /* @@ -167,7 +168,7 @@ cupsdCheckLogFile(cups_file_t **lf, /* IO - Log file */ * Insert the server name... */ - cupsCopyString(ptr, ServerName, sizeof(filename) - (size_t)(ptr - filename)); + cupsCopyString(ptr, ServerName ? ServerName : "localhost", sizeof(filename) - (size_t)(ptr - filename)); ptr += strlen(ptr); } else @@ -180,7 +181,10 @@ cupsdCheckLogFile(cups_file_t **lf, /* IO - Log file */ } } else + { *ptr++ = *logptr; + } + } *ptr = '\0'; }