- Authenticated printing did not always work when printing directly to a

remote server (STR #3435).
This commit is contained in:
Tim Waugh 2009-12-08 12:16:14 +00:00
parent f27c87695c
commit da2c254fc9
2 changed files with 49 additions and 0 deletions

45
cups-str3435.patch Normal file
View File

@ -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);

View File

@ -65,6 +65,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
@ -237,6 +238,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
@ -528,6 +530,8 @@ rm -rf $RPM_BUILD_ROOT
%changelog
* Tue Dec 8 2009 Tim Waugh <twaugh@redhat.com> - 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