View | Details | Raw Unified | Return to bug 53558
Collapse All | Expand All

(-)cups-2.2.1/scheduler/job.c (-10 / +28 lines)
Lines 1450-1455 cupsdFreeAllJobs(void) Link Here
1450
       job;
1450
       job;
1451
       job = (cupsd_job_t *)cupsArrayNext(Jobs))
1451
       job = (cupsd_job_t *)cupsArrayNext(Jobs))
1452
    cupsdDeleteJob(job, CUPSD_JOB_DEFAULT);
1452
    cupsdDeleteJob(job, CUPSD_JOB_DEFAULT);
1453
  /*
1454
   * Make sure all the arrays are completely cleared
1455
   * duplicate jobs can lead to left-over pointers
1456
   */
1457
  for (job = (cupsd_job_t *)cupsArrayFirst(ActiveJobs);
1458
       job;
1459
       job = (cupsd_job_t *)cupsArrayNext(ActiveJobs))
1460
    cupsArrayRemove(ActiveJobs, job);
1461
1462
  for (job = (cupsd_job_t *)cupsArrayFirst(PrintingJobs);
1463
       job;
1464
       job = (cupsd_job_t *)cupsArrayNext(PrintingJobs))
1465
    cupsArrayRemove(PrintingJobs, job);
1453
1466
1454
  cupsdReleaseSignals();
1467
  cupsdReleaseSignals();
1455
}
1468
}
Lines 4199-4215 load_job_cache(const char *filename) /* Link Here
4199
    }
4212
    }
4200
    else if (!_cups_strcasecmp(line, "</Job>"))
4213
    else if (!_cups_strcasecmp(line, "</Job>"))
4201
    {
4214
    {
4202
      cupsArrayAdd(Jobs, job);
4203
4215
4204
      if (job->state_value <= IPP_JOB_STOPPED && cupsdLoadJob(job))
4216
      // do not add duplicated jobs from job.cache
4205
	cupsArrayAdd(ActiveJobs, job);
4217
      if (!cupsdFindJob(jobid)) {
4206
      else if (job->state_value > IPP_JOB_STOPPED)
4218
        cupsdLogMessage(CUPSD_LOG_WARN, "Duplicate jobid %d", jobid);
4207
      {
4219
        cupsArrayAdd(Jobs, job);
4208
        if (!job->completed_time || !job->creation_time || !job->name || !job->koctets)
4220
4209
	{
4221
        if (job->state_value <= IPP_JOB_STOPPED && cupsdLoadJob(job))
4210
	  cupsdLoadJob(job);
4222
          cupsArrayAdd(ActiveJobs, job);
4211
	  unload_job(job);
4223
        else if (job->state_value > IPP_JOB_STOPPED)
4212
	}
4224
        {
4225
          if (!job->completed_time || !job->creation_time || !job->name || !job->koctets)
4226
          {
4227
            cupsdLoadJob(job);
4228
            unload_job(job);
4229
          }
4230
        }
4213
      }
4231
      }
4214
4232
4215
      job = NULL;
4233
      job = NULL;
(-)cups-2.2.1/scheduler/process.c (-2 / +4 lines)
Lines 404-411 cupsdEndProcess(int pid, /* I - Process Link Here
404
404
405
    pid = -pid;
405
    pid = -pid;
406
  }
406
  }
407
407
  if (abs(pid) == 1){
408
  if (force)
408
    cupsdLogMessage(CUPSD_LOG_ERROR, "Cupsd tried to kill (G)PID %d. Skipped.", pid);
409
  }
410
  else if (force)
409
    return (kill(pid, SIGKILL));
411
    return (kill(pid, SIGKILL));
410
  else
412
  else
411
    return (kill(pid, SIGTERM));
413
    return (kill(pid, SIGTERM));

Return to bug 53558