]> git.ipfire.org Git - thirdparty/cups.git/blobdiff - scheduler/server.c
Update svn:keyword properties.
[thirdparty/cups.git] / scheduler / server.c
index 057f7767aacb533139e35738d8c56d3406880cbf..3dc580e535f71901598a7880aef795e90d1c1d42 100644 (file)
@@ -1,25 +1,16 @@
 /*
  * "$Id$"
  *
- *   Server start/stop routines for the Common UNIX Printing System (CUPS).
+ *   Server start/stop routines for the CUPS scheduler.
  *
+ *   Copyright 2007-2012 by Apple Inc.
  *   Copyright 1997-2006 by Easy Software Products, all rights reserved.
  *
  *   These coded instructions, statements, and computer programs are the
- *   property of Easy Software Products and are protected by Federal
- *   copyright law.  Distribution and use rights are outlined in the file
- *   "LICENSE.txt" which should have been included with this file.  If this
- *   file is missing or damaged please contact Easy Software Products
- *   at:
- *
- *       Attn: CUPS Licensing Information
- *       Easy Software Products
- *       44141 Airport View Drive, Suite 204
- *       Hollywood, Maryland 20636 USA
- *
- *       Voice: (301) 373-9600
- *       EMail: cups-info@cups.org
- *         WWW: http://www.cups.org
+ *   property of Apple Inc. and are protected by Federal copyright
+ *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ *   which should have been included with this file.  If this file is
+ *   file is missing or damaged, see the license at "http://www.cups.org/".
  *
  * Contents:
  *
@@ -43,7 +34,7 @@
  * Local globals...
  */
 
-static int     started = 0;
+static int             started = 0;    /* Did we start the server already? */
 
 
 /*
@@ -53,40 +44,17 @@ static int  started = 0;
 void
 cupsdStartServer(void)
 {
-#ifdef HAVE_LIBSSL
-  int                  i;              /* Looping var */
-  struct timeval       curtime;        /* Current time in microseconds */
-  unsigned char                data[1024];     /* Seed data */
-#endif /* HAVE_LIBSSL */
-
-
-#ifdef HAVE_LIBSSL
  /*
-  * Initialize the encryption libraries...
+  * Start color management (as needed)...
   */
 
-  SSL_library_init();
-  SSL_load_error_strings();
-
- /*
-  * Using the current time is a dubious random seed, but on some systems
-  * it is the best we can do (on others, this seed isn't even used...)
-  */
-
-  gettimeofday(&curtime, NULL);
-  srand(curtime.tv_sec + curtime.tv_usec);
-
-  for (i = 0; i < sizeof(data); i ++)
-    data[i] = rand(); /* Yes, this is a poor source of random data... */
+  cupsdStartColor();
 
-  RAND_seed(&data, sizeof(data));
-#elif defined(HAVE_GNUTLS)
  /*
-  * Initialize the encryption libraries...
+  * Create the default security profile...
   */
 
-  gnutls_global_init();
-#endif /* HAVE_LIBSSL */
+  DefaultProfile = cupsdCreateProfile(0);
 
  /*
   * Startup all the networking stuff...
@@ -94,7 +62,6 @@ cupsdStartServer(void)
 
   cupsdStartListening();
   cupsdStartBrowsing();
-  cupsdStartPolling();
 
  /*
   * Create a pipe for CGI processes...
@@ -107,20 +74,18 @@ cupsdStartServer(void)
   {
     CGIStatusBuffer = cupsdStatBufNew(CGIPipes[0], "[CGI]");
 
-    cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                    "cupsdStartServer: Adding fd %d to InputSet...",
-                   CGIPipes[0]);
-    FD_SET(CGIPipes[0], InputSet);
+    cupsdAddSelect(CGIPipes[0], (cupsd_selfunc_t)cupsdUpdateCGI, NULL, NULL);
   }
 
  /*
   * Mark that the server has started and printers and jobs may be changed...
   */
 
-  LastEvent     = CUPSD_EVENT_PRINTER_CHANGED | CUPSD_EVENT_JOB_STATE_CHANGED |
-                  CUPSD_EVENT_SERVER_STARTED;
+  LastEvent = CUPSD_EVENT_PRINTER_CHANGED | CUPSD_EVENT_JOB_STATE_CHANGED |
+              CUPSD_EVENT_SERVER_STARTED;
+  started   = 1;
 
-  started = 1;
+  cupsdSetBusyState();
 }
 
 
@@ -135,15 +100,19 @@ cupsdStopServer(void)
     return;
 
  /*
-  * Close all network clients and stop all jobs...
+  * Stop color management (as needed)...
+  */
+
+  cupsdStopColor();
+
+ /*
+  * Close all network clients...
   */
 
   cupsdCloseAllClients();
   cupsdStopListening();
-  cupsdStopPolling();
   cupsdStopBrowsing();
   cupsdStopAllNotifiers();
-  cupsdSaveRemoteCache();
   cupsdDeleteAllCerts();
 
   if (Clients)
@@ -158,11 +127,7 @@ cupsdStopServer(void)
 
   if (CGIPipes[0] >= 0)
   {
-    cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                    "cupsdStopServer: Removing fd %d from InputSet...",
-                    CGIPipes[0]);
-
-    FD_CLR(CGIPipes[0], InputSet);
+    cupsdRemoveSelect(CGIPipes[0]);
 
     cupsdStatBufDelete(CGIStatusBuffer);
     close(CGIPipes[1]);
@@ -196,15 +161,19 @@ cupsdStopServer(void)
     PageFile = NULL;
   }
 
-#ifdef HAVE_NOTIFY_POST
  /*
-  * Send one last notification as the server shuts down.
+  * Delete the default security profile...
+  */
+
+  cupsdDestroyProfile(DefaultProfile);
+  DefaultProfile = NULL;
+
+ /*
+  * Write out any dirty files...
   */
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG,
-                  "notify_post(\"com.apple.printerListChange\") last");
-  notify_post("com.apple.printerListChange");
-#endif /* HAVE_NOTIFY_POST */
+  if (DirtyFiles)
+    cupsdCleanDirty();
 
   started = 0;
 }