]> 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 16:01:21 +0000 (12:01 -0400)
committerMichael R Sweet <msweet@msweet.org>
Tue, 27 May 2025 16:01:21 +0000 (12:01 -0400)
scheduler/conf.c
scheduler/log.c

index 3f58c84c1c01444bc9dd7e01fe37bd60c1a2d87b..db4104ec5f879ca628b969521714ae9299fdc521 100644 (file)
@@ -946,6 +946,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 dbaa4a8f99ad6db3de53df6d4cefde9c2061d576..d99accc708ce6e811aae8de97a6be3b65fee6079 100644 (file)
@@ -153,11 +153,12 @@ cupsdCheckLogFile(cups_file_t **lf,       /* IO - Log file */
       strlcat(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 == '%')
       {
        /*
@@ -171,7 +172,7 @@ cupsdCheckLogFile(cups_file_t **lf, /* IO - Log file */
          * Insert the server name...
          */
 
-         strlcpy(ptr, ServerName, sizeof(filename) - (size_t)(ptr - filename));
+         strlcpy(ptr, ServerName ? ServerName : "localhost", sizeof(filename) - (size_t)(ptr - filename));
          ptr += strlen(ptr);
        }
         else
@@ -184,7 +185,10 @@ cupsdCheckLogFile(cups_file_t **lf,        /* IO - Log file */
        }
       }
       else
+      {
        *ptr++ = *logptr;
+      }
+    }
 
     *ptr = '\0';
   }