]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
scheduler: Fix cupsd activated on-demand via socket 988/head
authorZdenek Dohnal <zdohnal@redhat.com>
Tue, 18 Jun 2024 08:38:48 +0000 (10:38 +0200)
committerZdenek Dohnal <zdohnal@redhat.com>
Tue, 18 Jun 2024 08:38:48 +0000 (10:38 +0200)
If only the expected cups.sock is set as listener in cupsd.conf, the
array Listeners was NULL. To prevent copying the code, do the array
allocation earlier and have only one check for Listeners, in
service_checkin() which is run every time cupsd starts.

Fixes #985

CHANGES.md
scheduler/conf.c
scheduler/main.c

index 5a32ec70761ef3ca4da5b48a99773818c3ed0dd5..4a2e25d5d6348c76c974083e1a013718410bc736 100644 (file)
@@ -1,10 +1,11 @@
-CHANGES - OpenPrinting CUPS 2.4.9 - (2024-06-11)
+CHANGES - OpenPrinting CUPS 2.4.10 - (2024-06-18)
 ================================================
 
-Changes in CUPS v2.4.10 (TBD)
+Changes in CUPS v2.4.10 (2024-06-18)
 -----------------------------
 
 - Fixed error handling when reading a mixed `1setOf` attribute.
+- Fixed scheduler start if there is only domain socket to listen on (Issue #985)
 
 
 Changes in CUPS v2.4.9 (2024-06-11)
index fff79a5bc85785e894d50b6d7f604ff85f09b101..9806471048a9b8a5e9f7ab51b177026ebaea20d4 100644 (file)
@@ -558,6 +558,18 @@ cupsdReadConfiguration(void)
 
   cupsdDeleteAllListeners();
 
+ /*
+  * Allocate array Listeners
+  */
+
+  Listeners = cupsArrayNew(NULL, NULL);
+
+  if (!Listeners)
+  {
+    fprintf(stderr, "Unable to allocate memory for array Listeners.");
+    return (0);
+  }
+
   old_remote_port = RemotePort;
   RemotePort      = 0;
 
@@ -1043,32 +1055,6 @@ cupsdReadConfiguration(void)
     }
   }
 
- /*
-  * Check that we have at least one listen/port line; if not, report this
-  * as an error and exit!
-  */
-
-#ifdef HAVE_ONDEMAND
-  if (cupsArrayCount(Listeners) == 0 && !OnDemand)
-#else
-  if (cupsArrayCount(Listeners) == 0)
-#endif // HAVE_ONDEMAND
-  {
-   /*
-    * No listeners!
-    */
-
-    cupsdLogMessage(CUPSD_LOG_EMERG,
-                    "No valid Listen or Port lines were found in the "
-                   "configuration file.");
-
-   /*
-    * Commit suicide...
-    */
-
-    cupsdEndProcess(getpid(), 0);
-  }
-
  /*
   * Set the default locale using the language and charset...
   */
@@ -3155,17 +3141,6 @@ read_cupsd_conf(cups_file_t *fp) /* I - File to read from */
         * Allocate another listener...
        */
 
-        if (!Listeners)
-         Listeners = cupsArrayNew(NULL, NULL);
-
-       if (!Listeners)
-       {
-          cupsdLogMessage(CUPSD_LOG_ERROR,
-                         "Unable to allocate %s at line %d - %s.",
-                         line, linenum, strerror(errno));
-          break;
-       }
-
         if ((lis = calloc(1, sizeof(cupsd_listener_t))) == NULL)
        {
           cupsdLogMessage(CUPSD_LOG_ERROR,
index e8e3662a7f80d254e28ae1faa1abec5057393fa7..ae2409e02ad8b9b3850551d2731cfd4465a19ba7 100644 (file)
@@ -2043,7 +2043,7 @@ service_checkin(void)
     * No listeners!
     */
 
-    cupsdLogMessage(CUPSD_LOG_EMERG, "service_checkin: No listener sockets present.");
+    cupsdLogMessage(CUPSD_LOG_EMERG, "No listener sockets present.");
 
    /*
     * Commit suicide...