/*
- * "$Id: server.c 4830 2005-11-12 03:27:16Z mike $"
+ * "$Id$"
*
- * Server start/stop routines for the Common UNIX Printing System (CUPS).
+ * Server start/stop routines for the CUPS scheduler.
*
- * Copyright 1997-2005 by Easy Software Products, all rights reserved.
+ * 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:
*
#include <cups/http-private.h>
#include "cupsd.h"
#include <grp.h>
+#ifdef HAVE_NOTIFY_H
+# include <notify.h>
+#endif /* HAVE_NOTIFY_H */
/*
* Local globals...
*/
-static int started = 0;
+static int started = 0; /* Did we start the server already? */
/*
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...
- */
-
- 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...)
+ * Start color management (as needed)...
*/
- gettimeofday(&curtime, NULL);
- srand(curtime.tv_sec + curtime.tv_usec);
+ cupsdStartColor();
- 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...
+ * Create the default security profile...
*/
- gnutls_global_init();
-#endif /* HAVE_LIBSSL */
+ DefaultProfile = cupsdCreateProfile(0);
/*
* Startup all the networking stuff...
cupsdStartListening();
cupsdStartBrowsing();
- cupsdStartPolling();
/*
* Create a pipe for CGI processes...
{
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);
}
- started = 1;
+ /*
+ * 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;
+ started = 1;
+
+ cupsdSetBusyState();
}
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 != NULL)
+ if (Clients)
{
- free(Clients);
+ cupsArrayDelete(Clients);
Clients = NULL;
}
-#if defined(HAVE_SSL) && defined(HAVE_CDSASSL)
- /*
- * Free all of the certificates...
- */
-
- if (ServerCertificatesArray)
- {
- CFRelease(ServerCertificatesArray);
- ServerCertificatesArray = NULL;
- }
-#endif /* HAVE_SSL && HAVE_CDSASSL */
-
/*
* Close the pipe for CGI processes...
*/
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]);
PageFile = NULL;
}
+ /*
+ * Delete the default security profile...
+ */
+
+ cupsdDestroyProfile(DefaultProfile);
+ DefaultProfile = NULL;
+
+ /*
+ * Write out any dirty files...
+ */
+
+ if (DirtyFiles)
+ cupsdCleanDirty();
+
started = 0;
}
/*
- * End of "$Id: server.c 4830 2005-11-12 03:27:16Z mike $".
+ * End of "$Id$".
*/