diff -p -up cups-1.3.7/scheduler/ipp.c.old cups-1.3.7/scheduler/ipp.c --- cups-1.3.7/scheduler/ipp.c.old 2008-06-19 09:31:30.000000000 -0400 +++ cups-1.3.7/scheduler/ipp.c 2008-06-19 09:31:36.000000000 -0400 @@ -9595,6 +9595,8 @@ start_printer(cupsd_client_t *con, /* I http_status_t status; /* Policy status */ cups_ptype_t dtype; /* Destination type (printer/class) */ cupsd_printer_t *printer; /* Printer data */ + char method[255]; + char command[1024]; cupsdLogMessage(CUPSD_LOG_DEBUG2, "start_printer(%p[%d], %s)", con, @@ -9615,6 +9617,19 @@ start_printer(cupsd_client_t *con, /* I return; } + /* + * Check if backend command is present + */ + + sscanf(printer->device_uri, "%254[^:]", method); + snprintf(command, sizeof(command), "%s/backend/%s", ServerBin, method); + if(access(command, F_OK)) + { + send_ipp_status(con, IPP_NOT_ACCEPTING, + _("Backend is not accessible")); + return; + } + /* * Check policy... */