/*
- * "$Id: server.c 6649 2007-07-11 21:46:42Z mike $"
+ * Server start/stop routines for the CUPS scheduler.
*
- * Server start/stop routines for the Common UNIX Printing System (CUPS).
+ * Copyright 2007-2019 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products, all rights reserved.
*
- * Copyright 2007-2008 by Apple Inc.
- * Copyright 1997-2006 by Easy Software Products, all rights reserved.
- *
- * 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
- * file is missing or damaged, see the license at "http://www.cups.org/".
- *
- * Contents:
- *
- * cupsdStartServer() - Start the server.
- * cupsdStopServer() - Stop the server.
+ * Licensed under Apache License v2.0. See the file "LICENSE" for more information.
*/
/*
* 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...)
+ * 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... */
+ DefaultProfile = cupsdCreateProfile(0, 1);
- RAND_seed(&data, sizeof(data));
-#elif defined(HAVE_GNUTLS)
- /*
- * Initialize the encryption libraries...
- */
+#ifdef HAVE_SANDBOX_H
+ if (!DefaultProfile && UseSandboxing && Sandboxing != CUPSD_SANDBOXING_OFF)
+ {
+ /*
+ * Failure to create the sandbox profile means something really bad has
+ * happened and we need to shutdown immediately.
+ */
- gnutls_global_init();
-#endif /* HAVE_LIBSSL */
+ return;
+ }
+#endif /* HAVE_SANDBOX_H */
/*
- * Create the default security profile...
+ * Start color management (as needed)...
*/
- DefaultProfile = cupsdCreateProfile(0);
+ cupsdStartColor();
/*
* Startup all the networking stuff...
cupsdStartListening();
cupsdStartBrowsing();
- cupsdStartPolling();
/*
* Create a pipe for CGI processes...
* 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(0);
}
return;
/*
- * Close all network clients and stop all jobs...
+ * Stop color management (as needed)...
+ */
+
+ cupsdStopColor();
+
+ /*
+ * Close all network clients...
*/
cupsdCloseAllClients();
cupsdStopListening();
- cupsdStopPolling();
cupsdStopBrowsing();
cupsdStopAllNotifiers();
cupsdDeleteAllCerts();
CGIPipes[1] = -1;
}
-#ifdef HAVE_NOTIFY_POST
- /*
- * Send one last notification as the server shuts down.
- */
-
- cupsdLogMessage(CUPSD_LOG_DEBUG,
- "notify_post(\"com.apple.printerListChange\") last");
- notify_post("com.apple.printerListChange");
-#endif /* HAVE_NOTIFY_POST */
-
/*
* Close all log files...
*/
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;
}
cupsdDestroyProfile(DefaultProfile);
DefaultProfile = NULL;
+ /*
+ * Expire subscriptions and clean out old jobs...
+ */
+
+ cupsdExpireSubscriptions(NULL, NULL);
+
+ if (JobHistoryUpdate)
+ cupsdCleanJobs();
+
/*
* Write out any dirty files...
*/
started = 0;
}
-
-
-/*
- * End of "$Id: server.c 6649 2007-07-11 21:46:42Z mike $".
- */