Index: doc/help/ref-printers-conf.html =================================================================== --- doc/help/ref-printers-conf.html (revision 7824) +++ doc/help/ref-printers-conf.html (working copy) @@ -191,6 +191,9 @@
abort-job
- Abort the job and proceed
with the next job in the queueretry-current-job
- Retry the current job
+ immediatelyretry-job
- Retry the job after waiting
for N seconds; the cupsd.conf JobRetryInterval
Index: CHANGES.txt
===================================================================
--- CHANGES.txt (revision 7826)
+++ CHANGES.txt (working copy)
@@ -3,6 +3,9 @@
CHANGES IN CUPS V1.4b1
+ - Added support for a "retry-current-job" error policy that
+ retries the current job immediately when the backend encounters
+ an error (STR #2555)
- The scheduler now returns a "forbidden" error when a user
correctly authenticates but does not have permission to
continue further (STR #2101)
Index: scheduler/printers.c
===================================================================
--- scheduler/printers.c (revision 7824)
+++ scheduler/printers.c (working copy)
@@ -349,6 +349,7 @@
static const char * const errors[] = /* printer-error-policy-supported values */
{
"abort-job",
+ "retry-current-job",
"retry-job",
"stop-printer"
};
Index: scheduler/job.c
===================================================================
--- scheduler/job.c (revision 7824)
+++ scheduler/job.c (working copy)
@@ -659,11 +659,13 @@
cupsdMarkDirty(CUPSD_DIRTY_JOBS);
/*
- * If the job was queued to a class, try requeuing it... For
- * faxes and retry-job queues, hold the current job for 5 minutes.
+ * If the job was queued to a class or the error policy is
+ * "retry-current-job", try requeuing it... For faxes and retry-job
+ * queues, hold the current job for 5 minutes.
*/
- if (job->dtype & (CUPS_PRINTER_CLASS | CUPS_PRINTER_IMPLICIT))
+ if ((job->dtype & (CUPS_PRINTER_CLASS | CUPS_PRINTER_IMPLICIT)) ||
+ !strcmp(printer->error_policy, "retry-current-job"))
cupsdCheckJobs();
else if ((printer->type & CUPS_PRINTER_FAX) ||
!strcmp(printer->error_policy, "retry-job"))
Index: scheduler/ipp.c
===================================================================
--- scheduler/ipp.c (revision 7824)
+++ scheduler/ipp.c (working copy)
@@ -10474,6 +10474,7 @@
continue;
if (strcmp(attr->values[0].string.text, "abort-job") &&
+ strcmp(attr->values[0].string.text, "retry-current-job") &&
strcmp(attr->values[0].string.text, "retry-job") &&
strcmp(attr->values[0].string.text, "stop-printer"))
{