Hello community, here is the log from the commit of package cups for openSUSE:Factory checked in at 2013-07-01 15:53:19 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/cups (Old) and /work/SRC/openSUSE:Factory/.cups.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "cups" Changes: -------- --- /work/SRC/openSUSE:Factory/cups/cups.changes 2013-06-28 16:02:27.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.cups.new/cups.changes 2013-07-01 15:53:21.000000000 +0200 @@ -1,0 +2,7 @@ +Fri Jun 28 20:16:52 UTC 2013 - stefan.bruens@rwth-aachen.de + +- Fix endless loop if IPP server does not accect job (bnc#827418) + see also https://www.cups.org/str.php?L4190 (STR#4190, + patch str4190.patch) + +------------------------------------------------------------------- New: ---- str4190.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ cups.spec ++++++ --- /var/tmp/diff_new_pack.k5apxn/_old 2013-07-01 15:53:22.000000000 +0200 +++ /var/tmp/diff_new_pack.k5apxn/_new 2013-07-01 15:53:22.000000000 +0200 @@ -15,6 +15,7 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # + Name: cups BuildRequires: dbus-1-devel BuildRequires: fdupes @@ -174,6 +175,8 @@ # and yes upstream should do the same. Please also check: # http://lists.opensuse.org/opensuse-factory/2013-01/msg00578.html Patch108: cups-move-everything-to-run.patch +# STR #4190: Send-Document failure ignored (also applies to client-error-not-authorized) +Patch109: str4190.patch # Install into this non-root directory (required when norootforbuild is used): BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -316,6 +319,8 @@ # Patch108 moves everything to /run %patch108 -p1 %endif +# Patch109: STR #4190 +%patch109 %build # Disable SILENT run of make so that make runs verbose as usual: ++++++ str4190.patch ++++++ Index: backend/ipp.c =================================================================== --- backend/ipp.c (revision 10611) +++ backend/ipp.c (working copy) @@ -1279,6 +1279,16 @@ } /* + * 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... + */ + + if (version == 10) + create_job = send_document = 0; + + /* * Start monitoring the printer in the background... */ @@ -1494,10 +1504,9 @@ goto cleanup; } } - else if (ipp_status == IPP_ERROR_JOB_CANCELED) + else if (ipp_status == IPP_ERROR_JOB_CANCELED || + ipp_status == IPP_NOT_AUTHORIZED) goto cleanup; - else if (ipp_status == IPP_NOT_AUTHORIZED) - continue; else { /* @@ -1678,14 +1687,35 @@ ipp_status == IPP_NOT_POSSIBLE || ipp_status == IPP_PRINTER_BUSY) continue; - else if (ipp_status == IPP_REQUEST_VALUE) + else if (ipp_status == IPP_REQUEST_VALUE || + ipp_status == IPP_ERROR_JOB_CANCELED || + ipp_status == IPP_NOT_AUTHORIZED) { /* - * Print file is too large, abort this job... + * Print file is too large, job was canceled, or we need new + * authentication data... */ goto cleanup; } + else if (ipp_status == IPP_NOT_FOUND) + { + /* + * Printer does not actually implement support for Create-Job/ + * Send-Document, so log the conformance issue and stop the printer. + */ + + fputs("DEBUG: This printer claims to support Create-Job and " + "Send-Document, but those operations failed.\n", stderr); + fputs("DEBUG: Add '?version=1.0' to the device URI to use legacy " + "compatibility mode.\n", stderr); + update_reasons(NULL, "+cups-ipp-conformance-failure-report," + "cups-ipp-missing-send-document"); + + ipp_status = IPP_INTERNAL_ERROR; /* Force queue to stop */ + + goto cleanup; + } else copies_remaining --; -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org