Skip to content

Commit

Permalink
Don't stop a printer after a job is canceled/aborted (Issue #5517)
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelrsweet committed Feb 21, 2019
1 parent 534af3a commit 3a66aed
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 5 deletions.
2 changes: 2 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ Changes in CUPS v2.2.11
- The `ippValidateAttribute` function did not catch all instances of invalid
UTF-8 strings (Issue #5509)
- Non-Kerberized printing to Windows via IPP was broken (Issue #5515)
- The scheduler no longer stops a printer if an error occurs when a job is
canceled or aborted (Issue #5517)
- Added a USB quirks rule for the DYMO 450 Turbo (Issue #5521)
- Added a USB quirks rule for Xerox printers (Issue #5523)
- The scheduler's self-signed certificate did not include all of the alternate
Expand Down
5 changes: 3 additions & 2 deletions backend/ipp.c
Original file line number Diff line number Diff line change
Expand Up @@ -2217,8 +2217,9 @@ main(int argc, /* I - Number of command-line args */
else if (ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED)
fputs("JOBSTATE: account-authorization-failed\n", stderr);

if (ipp_status == IPP_STATUS_ERROR_NOT_AUTHORIZED || ipp_status == IPP_STATUS_ERROR_FORBIDDEN ||
ipp_status == IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED)
if (job_canceled)
return (CUPS_BACKEND_OK);
else if (ipp_status == IPP_STATUS_ERROR_NOT_AUTHORIZED || ipp_status == IPP_STATUS_ERROR_FORBIDDEN || ipp_status == IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED)
return (CUPS_BACKEND_AUTH_REQUIRED);
else if (ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_LIMIT_REACHED ||
ipp_status == IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED ||
Expand Down
11 changes: 8 additions & 3 deletions scheduler/job.c
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/*
* Job management routines for the CUPS scheduler.
*
* Copyright 2007-2018 by Apple Inc.
* Copyright 2007-2019 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
Expand Down Expand Up @@ -3442,6 +3442,12 @@ finalize_job(cupsd_job_t *job, /* I - Job */
* Stop the printer...
*/

if (job_state == IPP_JSTATE_CANCELED || job_state == IPP_JSTATE_ABORTED)
{
cupsdLogJob(job, CUPSD_LOG_INFO, "Ignored STOP from backend since the job is %s.", job_state == IPP_JSTATE_CANCELED ? "canceled" : "aborted");
break;
}

printer_state = IPP_PRINTER_STOPPED;

if (ErrorLog)
Expand All @@ -3456,8 +3462,7 @@ finalize_job(cupsd_job_t *job, /* I - Job */
{
job_state = IPP_JOB_PENDING;

ippSetString(job->attrs, &job->reasons, 0,
"resources-are-not-ready");
ippSetString(job->attrs, &job->reasons, 0, "resources-are-not-ready");
}
break;

Expand Down

0 comments on commit 3a66aed

Please sign in to comment.