diff --git a/cups-str3435.patch b/cups-str3435.patch new file mode 100644 index 0000000..1870abb --- /dev/null +++ b/cups-str3435.patch @@ -0,0 +1,45 @@ +diff -up cups-1.4.2/cups/util.c.str3435 cups-1.4.2/cups/util.c +--- cups-1.4.2/cups/util.c.str3435 2009-06-22 21:44:34.000000000 +0100 ++++ cups-1.4.2/cups/util.c 2009-12-08 12:11:38.647375446 +0000 +@@ -1511,12 +1511,36 @@ cupsPrintFiles2( + return (0); + } + +- status = cupsStartDocument(http, name, job_id, docname, format, +- i == (num_files - 1)); ++ do ++ { ++ cupsFileRewind(fp); ++ ++ status = cupsStartDocument(http, name, job_id, docname, format, ++ i == (num_files - 1)); ++ ++ while (status == HTTP_CONTINUE && ++ (bytes = cupsFileRead(fp, buffer, sizeof(buffer))) > 0) ++ status = cupsWriteRequestData(http, buffer, bytes); ++ ++ if (status == HTTP_UNAUTHORIZED) ++ { ++ char resource[1024]; /* Printer resource */ + +- while (status == HTTP_CONTINUE && +- (bytes = cupsFileRead(fp, buffer, sizeof(buffer))) > 0) +- status = cupsWriteRequestData(http, buffer, bytes); ++ snprintf(resource, sizeof(resource), "/printers/%s", name); ++ ++ if (!cupsDoAuthentication(http, "POST", resource)) ++ { ++ if (httpReconnect(http)) ++ { ++ _cupsSetError(IPP_SERVICE_UNAVAILABLE, NULL, 0); ++ return (0); ++ } ++ } ++ else ++ status = HTTP_AUTHORIZATION_CANCELED; ++ } ++ } ++ while (status == HTTP_UNAUTHORIZED); + + cupsFileClose(fp); + diff --git a/cups.spec b/cups.spec index ff8993b..55445bf 100644 --- a/cups.spec +++ b/cups.spec @@ -67,6 +67,7 @@ Patch40: cups-str3442.patch Patch41: cups-negative-snmp-string-length.patch Patch42: cups-sidechannel-intrs.patch Patch43: cups-media-empty-warning.patch +Patch44: cups-str3435.patch Patch100: cups-lspp.patch @@ -239,6 +240,7 @@ module. %patch41 -p1 -b .negative-snmp-string-length %patch42 -p1 -b .sidechannel-intrs %patch43 -p1 -b .media-empty-warning +%patch44 -p1 -b .str3435 %if %lspp %patch100 -p1 -b .lspp @@ -538,6 +540,8 @@ rm -rf $RPM_BUILD_ROOT %changelog * Tue Dec 8 2009 Tim Waugh - 1:1.4.2-14 +- Authenticated printing did not always work when printing directly to + a remote server (STR #3435). - Use upstream patch to stop the network backends incorrectly clearing the media-empty-warning state (rev 8896). - Use upstream patch to fix interrupt handling in the side-channel