]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Make sure to reopen error log if server name is being substituted (Issue #1277)
authorMichael R Sweet <msweet@msweet.org>
Tue, 27 May 2025 15:49:55 +0000 (11:49 -0400)
committerMichael R Sweet <msweet@msweet.org>
Tue, 27 May 2025 15:49:55 +0000 (11:49 -0400)
scheduler/conf.c
scheduler/log.c

index 73c34bc93ca337547a7850fa15f97f7f61534581..da5fd54a2fa1cffd83a7c91c00508046d33a43a3 100644 (file)
@@ -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...
   */
index 5eec7abb9044dc6595ce9066c9ba2179304f2b3f..159a8313aa7af6c9aafd2a26560e7307e6a7cf5f 100644 (file)
@@ -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';
   }