diff options
Diffstat (limited to 'scheduler/main.c')
-rw-r--r-- | scheduler/main.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/scheduler/main.c b/scheduler/main.c index 9d6b8f8d6..f90e74545 100644 --- a/scheduler/main.c +++ b/scheduler/main.c @@ -1718,16 +1718,21 @@ process_children(void) else job->status = -status; /* Backend failed */ - if ((!(job->printer->type & CUPS_PRINTER_FAX) || job->filters[i]) && - job->status_level > CUPSD_LOG_ERROR) + if (job->status_level > CUPSD_LOG_ERROR) { job->status_level = CUPSD_LOG_ERROR; - snprintf(job->printer->state_message, - sizeof(job->printer->state_message), "%s failed", name); - cupsdAddPrinterHistory(job->printer); + if (job->printer) + { + snprintf(job->printer->state_message, + sizeof(job->printer->state_message), "%s failed", name); + cupsdAddPrinterHistory(job->printer); + } + + if (!job->attrs) + cupsdLoadJob(job); - if (!job->printer_message) + if (!job->printer_message && job->attrs) { if ((job->printer_message = ippFindAttribute(job->attrs, "job-printer-state-message", @@ -1738,8 +1743,9 @@ process_children(void) NULL, ""); } - cupsdSetString(&(job->printer_message->values[0].string.text), - job->printer->state_message); + if (job->printer_message) + cupsdSetString(&(job->printer_message->values[0].string.text), + job->printer->state_message); } } |