6484bf8fde
info files in /var/spool/cups (bug #571830).
146 lines
4.3 KiB
Diff
146 lines
4.3 KiB
Diff
diff -up cups-1.4.2/scheduler/job.c.str3425 cups-1.4.2/scheduler/job.c
|
|
--- cups-1.4.2/scheduler/job.c.str3425 2010-03-09 16:59:12.000000000 +0100
|
|
+++ cups-1.4.2/scheduler/job.c 2010-03-09 17:02:57.000000000 +0100
|
|
@@ -253,7 +253,7 @@ cupsdCancelJobs(const char *dest, /* I -
|
|
if (purge)
|
|
cupsdSetJobState(job, IPP_JOB_CANCELED, CUPSD_JOB_PURGE,
|
|
"Job purged by user.");
|
|
- else
|
|
+ else if (job->state_value < IPP_JOB_CANCELED)
|
|
cupsdSetJobState(job, IPP_JOB_CANCELED, CUPSD_JOB_DEFAULT,
|
|
"Job canceled by user.");
|
|
}
|
|
@@ -433,11 +433,11 @@ cupsdCleanJobs(void)
|
|
cupsd_job_t *job; /* Current job */
|
|
|
|
|
|
- if (MaxJobs <= 0)
|
|
+ if (MaxJobs <= 0 && JobHistory)
|
|
return;
|
|
|
|
for (job = (cupsd_job_t *)cupsArrayFirst(Jobs);
|
|
- job && cupsArrayCount(Jobs) >= MaxJobs;
|
|
+ job && (cupsArrayCount(Jobs) >= MaxJobs || !JobHistory);
|
|
job = (cupsd_job_t *)cupsArrayNext(Jobs))
|
|
if (job->state_value >= IPP_JOB_CANCELED && !job->printer)
|
|
cupsdDeleteJob(job, CUPSD_JOB_PURGE);
|
|
@@ -2286,12 +2286,14 @@ cupsdSetJobState(
|
|
if (!cupsdLoadJob(job))
|
|
return;
|
|
|
|
- /*
|
|
- * Don't do anything if the state is unchanged...
|
|
- */
|
|
-
|
|
- if (newstate == (oldstate = job->state_value))
|
|
- return;
|
|
+ /*
|
|
+ * Don't do anything if the state is unchanged and we aren't purging the
|
|
+ * job...
|
|
+ */
|
|
+
|
|
+ oldstate = job->state_value;
|
|
+ if (newstate == oldstate && action != CUPSD_JOB_PURGE)
|
|
+ return;
|
|
|
|
/*
|
|
* Stop any processes that are working on the current job...
|
|
@@ -2499,7 +2501,14 @@ cupsdSetJobState(
|
|
cupsdMarkDirty(CUPSD_DIRTY_JOBS);
|
|
}
|
|
else if (!job->printer)
|
|
+ {
|
|
+ /*
|
|
+ * Delete the job immediately if not actively printing...
|
|
+ */
|
|
+
|
|
cupsdDeleteJob(job, CUPSD_JOB_PURGE);
|
|
+ job = NULL;
|
|
+ }
|
|
break;
|
|
}
|
|
|
|
@@ -2507,7 +2516,7 @@ cupsdSetJobState(
|
|
* Finalize the job immediately if we forced things...
|
|
*/
|
|
|
|
- if (action == CUPSD_JOB_FORCE)
|
|
+ if (action >= CUPSD_JOB_FORCE && job && job->printer)
|
|
finalize_job(job);
|
|
|
|
/*
|
|
diff -up cups-1.4.2/scheduler/main.c.str3425 cups-1.4.2/scheduler/main.c
|
|
--- cups-1.4.2/scheduler/main.c.str3425 2010-03-09 16:59:12.000000000 +0100
|
|
+++ cups-1.4.2/scheduler/main.c 2010-03-09 16:59:12.000000000 +0100
|
|
@@ -389,7 +389,7 @@ main(int argc, /* I - Number of comm
|
|
* parent's file descriptors to be blocking. This is a workaround for a
|
|
* limitation of userland libpthread on OpenBSD.
|
|
*/
|
|
-
|
|
+
|
|
_thread_sys_closefrom(0);
|
|
#endif /* __OpenBSD__ */
|
|
|
|
@@ -817,8 +817,8 @@ main(int argc, /* I - Number of comm
|
|
|
|
if (timeout == 86400 && Launchd && LaunchdTimeout && !NumPolled &&
|
|
!cupsArrayCount(ActiveJobs) &&
|
|
- (!Browsing ||
|
|
- (!BrowseRemoteProtocols &&
|
|
+ (!Browsing ||
|
|
+ (!BrowseRemoteProtocols &&
|
|
(!NumBrowsers || !BrowseLocalProtocols ||
|
|
cupsArrayCount(Printers) == 0))))
|
|
{
|
|
@@ -1046,6 +1046,7 @@ main(int argc, /* I - Number of comm
|
|
if ((current_time - senddoc_time) >= 10)
|
|
{
|
|
cupsdCheckJobs();
|
|
+ cupsdCleanJobs();
|
|
senddoc_time = current_time;
|
|
}
|
|
|
|
@@ -1204,8 +1205,8 @@ main(int argc, /* I - Number of comm
|
|
#endif /* HAVE_GSSAPI */
|
|
|
|
#if defined(__APPLE__) && defined(HAVE_DLFCN_H)
|
|
- /*
|
|
- * Unload Print Service quota enforcement library (X Server only)
|
|
+ /*
|
|
+ * Unload Print Service quota enforcement library (X Server only)
|
|
*/
|
|
|
|
PSQUpdateQuotaProc = NULL;
|
|
@@ -1562,13 +1563,13 @@ launchd_checkin(void)
|
|
|
|
if (lis)
|
|
{
|
|
- cupsdLogMessage(CUPSD_LOG_DEBUG,
|
|
+ cupsdLogMessage(CUPSD_LOG_DEBUG,
|
|
"launchd_checkin: Matched existing listener %s with fd %d...",
|
|
httpAddrString(&(lis->address), s, sizeof(s)), fd);
|
|
}
|
|
else
|
|
{
|
|
- cupsdLogMessage(CUPSD_LOG_DEBUG,
|
|
+ cupsdLogMessage(CUPSD_LOG_DEBUG,
|
|
"launchd_checkin: Adding new listener %s with fd %d...",
|
|
httpAddrString(&addr, s, sizeof(s)), fd);
|
|
|
|
@@ -1622,12 +1623,12 @@ launchd_checkout(void)
|
|
|
|
/*
|
|
* Create or remove the launchd KeepAlive file based on whether
|
|
- * there are active jobs, polling, browsing for remote printers or
|
|
+ * there are active jobs, polling, browsing for remote printers or
|
|
* shared printers to advertise...
|
|
*/
|
|
|
|
- if ((cupsArrayCount(ActiveJobs) || NumPolled ||
|
|
- (Browsing &&
|
|
+ if ((cupsArrayCount(ActiveJobs) || NumPolled ||
|
|
+ (Browsing &&
|
|
(BrowseRemoteProtocols ||
|
|
(BrowseLocalProtocols && NumBrowsers && cupsArrayCount(Printers))))))
|
|
{
|