5e7041
diff -up cups-1.6.3/scheduler/ipp.c.str4648 cups-1.6.3/scheduler/ipp.c
5e7041
--- cups-1.6.3/scheduler/ipp.c.str4648	2015-07-08 10:24:31.389942557 +0100
5e7041
+++ cups-1.6.3/scheduler/ipp.c	2015-07-08 10:24:51.042104284 +0100
5e7041
@@ -3392,6 +3392,8 @@ cancel_all_jobs(cupsd_client_t  *con,	/*
5e7041
   }
5e7041
 
5e7041
   con->response->request.status.status_code = IPP_OK;
5e7041
+
5e7041
+  cupsdCheckJobs();
5e7041
 }
5e7041
 
5e7041
 
5e7041
diff -up cups-1.6.3/scheduler/job.c.str4648 cups-1.6.3/scheduler/job.c
5e7041
--- cups-1.6.3/scheduler/job.c.str4648	2015-07-08 10:24:31.399942636 +0100
5e7041
+++ cups-1.6.3/scheduler/job.c	2015-07-08 10:24:51.043104293 +0100
5e7041
@@ -267,8 +267,6 @@ cupsdCancelJobs(const char *dest,	/* I -
5e7041
 			 "Job canceled by user.");
5e7041
     }
5e7041
   }
5e7041
-
5e7041
-  cupsdCheckJobs();
5e7041
 }
5e7041
 
5e7041
 
5e7041
@@ -3488,13 +3486,6 @@ finalize_job(cupsd_job_t *job,		/* I - J
5e7041
 
5e7041
   job->printer->job = NULL;
5e7041
   job->printer      = NULL;
5e7041
-
5e7041
- /*
5e7041
-  * Try printing another job...
5e7041
-  */
5e7041
-
5e7041
-  if (printer_state != IPP_PRINTER_STOPPED)
5e7041
-    cupsdCheckJobs();
5e7041
 }
5e7041
 
5e7041
 
5e7041
@@ -4744,6 +4735,8 @@ update_job(cupsd_job_t *job)		/* I - Job
5e7041
 		*ptr;			/* Pointer update... */
5e7041
   int		loglevel,		/* Log level for message */
5e7041
 		event = 0;		/* Events? */
5e7041
+  cupsd_printer_t *printer = job->printer;
5e7041
+					/* Printer */
5e7041
   static const char * const levels[] =	/* Log levels */
5e7041
 		{
5e7041
 		  "NONE",
5e7041
@@ -5063,10 +5056,11 @@ update_job(cupsd_job_t *job)		/* I - Job
5e7041
     finalize_job(job, 1);
5e7041
 
5e7041
    /*
5e7041
-    * Check for new jobs...
5e7041
+    * Try printing another job...
5e7041
     */
5e7041
 
5e7041
-    cupsdCheckJobs();
5e7041
+    if (printer->state != IPP_PRINTER_STOPPED)
5e7041
+      cupsdCheckJobs();
5e7041
   }
5e7041
 }
5e7041