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 queue
  • +
  • retry-current-job - Retry the current job + immediately
  • +
  • retry-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")) {