111 lines
3.8 KiB
Diff
111 lines
3.8 KiB
Diff
|
diff --git a/scheduler/job.c b/scheduler/job.c
|
||
|
index 82ef2eb..5d5e3aa 100644
|
||
|
--- a/scheduler/job.c
|
||
|
+++ b/scheduler/job.c
|
||
|
@@ -448,10 +448,20 @@ cupsdCleanJobs(void)
|
||
|
curtime = time(NULL);
|
||
|
JobHistoryUpdate = 0;
|
||
|
|
||
|
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCleanJobs: curtime=%d", (int)curtime);
|
||
|
+
|
||
|
for (job = (cupsd_job_t *)cupsArrayFirst(Jobs);
|
||
|
job;
|
||
|
job = (cupsd_job_t *)cupsArrayNext(Jobs))
|
||
|
{
|
||
|
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCleanJobs: Job %d, state=%d, printer=%p, history_time=%d, file_time=%d", job->id, (int)job->state_value, (void *)job->printer, (int)job->history_time, (int)job->file_time);
|
||
|
+
|
||
|
+ if ((job->history_time && job->history_time < JobHistoryUpdate) || !JobHistoryUpdate)
|
||
|
+ JobHistoryUpdate = job->history_time;
|
||
|
+
|
||
|
+ if ((job->file_time && job->file_time < JobHistoryUpdate) || !JobHistoryUpdate)
|
||
|
+ JobHistoryUpdate = job->file_time;
|
||
|
+
|
||
|
if (job->state_value >= IPP_JOB_CANCELED && !job->printer)
|
||
|
{
|
||
|
/*
|
||
|
@@ -462,26 +472,14 @@ cupsdCleanJobs(void)
|
||
|
(job->history_time && job->history_time <= curtime))
|
||
|
{
|
||
|
cupsdLogJob(job, CUPSD_LOG_DEBUG, "Removing from history.");
|
||
|
- cupsdDeleteJob(job, CUPSD_JOB_PURGE);
|
||
|
+ cupsdDeleteJob(job, CUPSD_JOB_PURGE);
|
||
|
}
|
||
|
else if (job->file_time && job->file_time <= curtime)
|
||
|
{
|
||
|
cupsdLogJob(job, CUPSD_LOG_DEBUG, "Removing document files.");
|
||
|
- cupsdLogJob(job, CUPSD_LOG_DEBUG2, "curtime=%ld, job->file_time=%ld", (long)curtime, (long)job->file_time);
|
||
|
remove_job_files(job);
|
||
|
|
||
|
cupsdMarkDirty(CUPSD_DIRTY_JOBS);
|
||
|
-
|
||
|
- if (job->history_time < JobHistoryUpdate || !JobHistoryUpdate)
|
||
|
- JobHistoryUpdate = job->history_time;
|
||
|
- }
|
||
|
- else
|
||
|
- {
|
||
|
- if (job->history_time < JobHistoryUpdate || !JobHistoryUpdate)
|
||
|
- JobHistoryUpdate = job->history_time;
|
||
|
-
|
||
|
- if (job->file_time < JobHistoryUpdate || !JobHistoryUpdate)
|
||
|
- JobHistoryUpdate = job->file_time;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
@@ -1873,7 +1871,7 @@ cupsdLoadJob(cupsd_job_t *job) /* I - Job */
|
||
|
job->completed_time = attr->values[0].integer;
|
||
|
|
||
|
if (JobHistory < INT_MAX)
|
||
|
- job->history_time = attr->values[0].integer + JobHistory;
|
||
|
+ job->history_time = job->completed_time + JobHistory;
|
||
|
else
|
||
|
job->history_time = INT_MAX;
|
||
|
|
||
|
@@ -1884,7 +1882,7 @@ cupsdLoadJob(cupsd_job_t *job) /* I - Job */
|
||
|
JobHistoryUpdate = job->history_time;
|
||
|
|
||
|
if (JobFiles < INT_MAX)
|
||
|
- job->file_time = attr->values[0].integer + JobFiles;
|
||
|
+ job->file_time = job->completed_time + JobFiles;
|
||
|
else
|
||
|
job->file_time = INT_MAX;
|
||
|
|
||
|
@@ -3100,8 +3098,10 @@ cupsdUpdateJobs(void)
|
||
|
* Update history/file expiration times...
|
||
|
*/
|
||
|
|
||
|
+ job->completed_time = attr->values[0].integer;
|
||
|
+
|
||
|
if (JobHistory < INT_MAX)
|
||
|
- job->history_time = attr->values[0].integer + JobHistory;
|
||
|
+ job->history_time = job->completed_time + JobHistory;
|
||
|
else
|
||
|
job->history_time = INT_MAX;
|
||
|
|
||
|
@@ -3115,7 +3115,7 @@ cupsdUpdateJobs(void)
|
||
|
JobHistoryUpdate = job->history_time;
|
||
|
|
||
|
if (JobFiles < INT_MAX)
|
||
|
- job->file_time = attr->values[0].integer + JobFiles;
|
||
|
+ job->file_time = job->completed_time + JobFiles;
|
||
|
else
|
||
|
job->file_time = INT_MAX;
|
||
|
|
||
|
@@ -4909,7 +4909,7 @@ set_time(cupsd_job_t *job, /* I - Job to update */
|
||
|
job->completed_time = curtime;
|
||
|
|
||
|
if (JobHistory < INT_MAX && attr)
|
||
|
- job->history_time = attr->values[0].integer + JobHistory;
|
||
|
+ job->history_time = job->completed_time + JobHistory;
|
||
|
else
|
||
|
job->history_time = INT_MAX;
|
||
|
|
||
|
@@ -4917,7 +4917,7 @@ set_time(cupsd_job_t *job, /* I - Job to update */
|
||
|
JobHistoryUpdate = job->history_time;
|
||
|
|
||
|
if (JobFiles < INT_MAX && attr)
|
||
|
- job->file_time = curtime + JobFiles;
|
||
|
+ job->file_time = job->completed_time + JobFiles;
|
||
|
else
|
||
|
job->file_time = INT_MAX;
|
||
|
|