]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Don't stop a printer after a job is canceled/aborted (Issue #5517)
authorMichael R Sweet <michael.r.sweet@gmail.com>
Thu, 21 Feb 2019 15:43:16 +0000 (10:43 -0500)
committerMichael R Sweet <michael.r.sweet@gmail.com>
Thu, 21 Feb 2019 15:43:16 +0000 (10:43 -0500)
CHANGES.md
backend/ipp.c
scheduler/job.c

index 8c7e3687b7b97e16ea58daf14244e9aa2db6f0ea..6e43dbb4f9fd11d36aa98033b167f795bb7961c5 100644 (file)
@@ -23,6 +23,8 @@ Changes in CUPS v2.3b8
 - The web interface no longer provides access to the log files (Issue #5513)
 - Non-Kerberized printing to Windows via IPP was broken (Issue #5515)
 - Eliminated use of private headers and some deprecated macOS APIs (Issue #5516)
+- 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
index e91f7684c2e99fbc839c718c4dfdcdc1204aa5b6..0b2edeb7ef7bc6344b43744c2d67cba40b6fa40e 100644 (file)
@@ -2232,8 +2232,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 ||
index da7cb9c086f63e83a125bf16d4856050803ca39d..d924b2eb52a8c56cef4f5a6cefafac67378d2b69 100644 (file)
@@ -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.
  *
  * Licensed under Apache License v2.0.  See the file "LICENSE" for more
@@ -3437,6 +3437,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)
@@ -3451,8 +3457,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;