]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
The scheduler did not preserve listener sockets from launchd or systemd after a
authormsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>
Wed, 3 Sep 2014 15:33:50 +0000 (15:33 +0000)
committermsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>
Wed, 3 Sep 2014 15:33:50 +0000 (15:33 +0000)
restart (<rdar://problem/18112848>)

git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12149 a1ca3aef-8c08-0410-bb20-df032aa958be

CHANGES.txt
scheduler/conf.c
scheduler/listen.c

index b7c0b26a0cb83161d5b31b0f2c852894a77e61b1..b7a2eb637db3bed77dd91d7ff1d9c199d54c577b 100644 (file)
@@ -1,6 +1,12 @@
-CHANGES.txt - 2.0rc1 - 2014-09-02
+CHANGES.txt - 2.0rc2 - 2014-09-03
 ---------------------------------
 
+CHANGES IN CUPS V2.0rc2
+
+       - The scheduler did not preserve listener sockets from launchd or
+         systemd after a restart (<rdar://problem/18112848>)
+
+
 CHANGES IN CUPS V2.0rc1
 
        - Documentation updates (STR #4464)
index 905bbd11a32a5152aee0d156b855d324526e69da..305efb025f6a98d20cd06c5de4fc4532eef9e254 100644 (file)
@@ -2974,9 +2974,13 @@ read_cupsd_conf(cups_file_t *fp) /* I - File to read from */
 
         if (lis)
        {
-         httpAddrString(&lis->address, temp, sizeof(temp));
-         cupsdLogMessage(CUPSD_LOG_WARN,
-                         "Duplicate listen address \"%s\" ignored.", temp);
+         if (!lis->on_demand)
+         {
+           httpAddrString(&lis->address, temp, sizeof(temp));
+           cupsdLogMessage(CUPSD_LOG_WARN,
+                           "Duplicate listen address \"%s\" ignored.", temp);
+         }
+
           continue;
        }
 
index b23c5e27bf6172b9702b4e53be0321672d9f5f83..fb8786d0e1e47a30e8efb6580c11bb50be68d453 100644 (file)
@@ -43,10 +43,17 @@ cupsdDeleteAllListeners(void)
   for (lis = (cupsd_listener_t *)cupsArrayFirst(Listeners);
        lis;
        lis = (cupsd_listener_t *)cupsArrayNext(Listeners))
-    free(lis);
+    if (!lis->on_demand)
+    {
+      cupsArrayRemove(Listeners, lis);
+      free(lis);
+    }
 
-  cupsArrayDelete(Listeners);
-  Listeners = NULL;
+  if (cupsArrayCount(Listeners) == 0)
+  {
+    cupsArrayDelete(Listeners);
+    Listeners = NULL;
+  }
 }
 
 
@@ -275,15 +282,19 @@ cupsdStopListening(void)
        lis = (cupsd_listener_t *)cupsArrayNext(Listeners))
   {
 #if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
-    if (lis->fd != -1 && !lis->on_demand)
+    if (!lis->on_demand && lis->fd != -1)
+    {
       httpAddrClose(&(lis->address), lis->fd);
+      lis->fd = -1;
+    }
 
 #else
     if (lis->fd != -1)
+    {
       httpAddrClose(&(lis->address), lis->fd);
+      lis->fd = -1;
+    }
 #endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
-
-    lis->fd = -1;
   }
 }