Index: backend/ipp.c =================================================================== --- backend/ipp.c (revision 10756) +++ backend/ipp.c (working copy) @@ -1354,8 +1354,9 @@ /* * If the printer only claims to support IPP/1.0, or if the user specifically * included version=1.0 in the URI, then do not try to use Create-Job or - * Send-Document. This is another dreaded compatibility hack, but unfortunately - * there are enough broken printers out there that we need this for now... + * Send-Document. This is another dreaded compatibility hack, but + * unfortunately there are enough broken printers out there that we need + * this for now... */ if (version == 10) @@ -1812,6 +1813,27 @@ goto cleanup; } + else if (ipp_status == IPP_STATUS_ERROR_CUPS_UPGRADE_REQUIRED) + { + /* + * Server is configured incorrectly; the policy for Create-Job and + * Send-Document has to be the same (auth or no auth, encryption or + * no encryption). Force the queue to stop since printing will never + * work. + */ + + fputs("DEBUG: The server or printer is configured incorrectly.\n", + stderr); + fputs("DEBUG: The policy for Create-Job and Send-Document must have the " + "same authentication and encryption requirements.\n", stderr); + + ipp_status = IPP_STATUS_ERROR_INTERNAL; + + if (job_id > 0) + cancel_job(http, uri, job_id, resource, argv[2], version); + + goto cleanup; + } else if (ipp_status == IPP_NOT_FOUND) { /*