]> git.ipfire.org Git - thirdparty/cups.git/blobdiff - scheduler/server.c
Fix source file header text duplication text duplication.
[thirdparty/cups.git] / scheduler / server.c
index 057f7767aacb533139e35738d8c56d3406880cbf..04b26d64d2d1fd0180c85a74df0da53eb4a8d987 100644 (file)
@@ -1,30 +1,14 @@
 /*
- * "$Id$"
+ * Server start/stop routines for the CUPS scheduler.
  *
- *   Server start/stop routines for the Common UNIX Printing System (CUPS).
+ * Copyright 2007-2012 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products, all rights reserved.
  *
- *   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
- *
- * Contents:
- *
- *   cupsdStartServer() - Start the server.
- *   cupsdStopServer()  - Stop the server.
+ * These coded instructions, statements, and computer programs are the
+ * 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
+ * missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -43,7 +27,7 @@
  * Local globals...
  */
 
-static int     started = 0;
+static int             started = 0;    /* Did we start the server already? */
 
 
 /*
@@ -53,40 +37,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();
+  cupsdStartColor();
 
  /*
-  * 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...)
+  * Create the default security profile...
   */
 
-  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... */
-
-  RAND_seed(&data, sizeof(data));
-#elif defined(HAVE_GNUTLS)
- /*
-  * Initialize the encryption libraries...
-  */
-
-  gnutls_global_init();
-#endif /* HAVE_LIBSSL */
+  DefaultProfile = cupsdCreateProfile(0, 1);
 
  /*
   * Startup all the networking stuff...
@@ -94,7 +55,6 @@ cupsdStartServer(void)
 
   cupsdStartListening();
   cupsdStartBrowsing();
-  cupsdStartPolling();
 
  /*
   * Create a pipe for CGI processes...
@@ -107,20 +67,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 +93,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 +120,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]);
@@ -177,39 +135,41 @@ cupsdStopServer(void)
 
   if (AccessFile != NULL)
   {
-    cupsFileClose(AccessFile);
+    if (AccessFile != LogStderr)
+      cupsFileClose(AccessFile);
 
     AccessFile = NULL;
   }
 
   if (ErrorFile != NULL)
   {
-    cupsFileClose(ErrorFile);
+    if (ErrorFile != LogStderr)
+      cupsFileClose(ErrorFile);
 
     ErrorFile = NULL;
   }
 
   if (PageFile != NULL)
   {
-    cupsFileClose(PageFile);
+    if (PageFile != LogStderr)
+      cupsFileClose(PageFile);
 
     PageFile = NULL;
   }
 
-#ifdef HAVE_NOTIFY_POST
  /*
-  * Send one last notification as the server shuts down.
+  * Delete the default security profile...
   */
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG,
-                  "notify_post(\"com.apple.printerListChange\") last");
-  notify_post("com.apple.printerListChange");
-#endif /* HAVE_NOTIFY_POST */
+  cupsdDestroyProfile(DefaultProfile);
+  DefaultProfile = NULL;
 
-  started = 0;
-}
+ /*
+  * Write out any dirty files...
+  */
 
+  if (DirtyFiles)
+    cupsdCleanDirty();
 
-/*
- * End of "$Id$".
- */
+  started = 0;
+}