>It is encouraged that all IPP servers utilize HTTP1.1 servers that support
chunking of POST requests.
I think we need a real technical writer on the team (i.e., someone who
majored in English)! I can just hear my old teachers shouting "Clunker!".
Passive voice, use of a big word "utilize" when "use" would suffice, poorly
defined notion of "support", IPP server is undefined, ... [Sorry about the
rant! No intent to offend anyone! I'm just as bad, which is why we need
an English major.]
How about something along the lines of:
> We strongly RECOMMEND that all IPP/1.0 applications be able to receive
and decode HTTP/1.1 messages encoded with the "chunked" transfer-coding.
Specifically, IPP objects SHOULD be able to receive and decode chunked POST
requests.
I'd rather leave 2 as a MAY rather than an "encouragement". I don't want
to encourage dependency on this kind of behavior. In many cases it's just
not practical for the client to buffer a dynamically-generated document
(e.g., network computers with limited resources). It's also quite
difficult, in some situations, to "back up" the content producer to retry
the request with Content-Length. How about something like this:
> Note: for CGI legacy reasons, some general-purpose web servers reject
chunked POST requests. To provide compatability with such servers, IPP
clients MAY support the ability to repeat a request with a valid
Content-Length header instead of the "chunked" transfer-coding when error
411 or error 413 is encountered.
-Carl
"Hastings, Tom N" <hastings@cp10.es.xerox.com> on 01/21/99 02:19:54 AM
To: "Wagner,William" <bwagner@digprod.com>, Harry Lewis/Boulder/IBM, Carl
Kugler/Boulder/IBM, ipp@pwg.org
cc:
Subject: RE: IPP> Chunking Explanation
I like Bill's suggestions on Harry's original.
1. I'd like to clarify the last paragraph of the first section to make sure
that its HTTP POST chunked requests that we are talking about. (Some
implementations support chunked GET responses, but not chunked POST
requests).
So change:
It is encouraged that all IPP servers utilize HTTP1.1 servers that support
chunking.
to:
It is encouraged that all IPP servers utilize HTTP1.1 servers that support
chunking of POST requests.
2. In addition, I'd like to make the last paragraph of the second section
to
be an encouragement, just like the last paragraph of the first section,
rather than just a MAY. What do you think?
So change:
To provide compatability with such servers, IPP clients MAY support the
ability to determine CONTENT_LENGTH and resubmit the job if error 411 or
error 413 is encountered in response to a Chunked request.
to:
To provide compatability with such servers, it is encouraged that IPP
clients support the
ability to determine CONTENT_LENGTH and resubmit the job if error 411 or
error 413 is encountered in response to a Chunked request.
Ok?
Tom Hastings
Here is Bill's complete text:
Paragraph on Problems with the Use of CGI
RFC2068 requires HTTP1.1 Servers to support both Content Length and
Chunking for all requests. The use of chunking rather than determining
Content Length should facilitate the transmission of large, indeterminate
length print jobs.
CGI, on the other hand, mandates the presence of the CONTENT_LENGTH
environment variable. Largely due to this HTTP1.1 / CGI conflict, HTTP1.1
server implementations exist that do not support Chunking for the HTTP
(IPP)
POST.
It is encouraged that all IPP servers utilize HTTP1.1 servers that support
chunking.
Paragraph on IPP Client Handling of Non-Chunking Servers
RFC2068 requires HTTP1.1 Servers to support both Content Length and
Chunking for all requests. However, some IPP servers may exist that
do not support Chunking. In this case, the IPP server may return error
411(Length Required) in response to the HTTP POST.
Further, some IPP servers may implement a filter-and-buffer approach to
determine CONTENT_LENGTH from a chunked encoding before passing the decoded
request body to a CGI application. If the buffered request grows too
large,
the server may reject the request with status code 413 (Request Entity Too
Large). If this occurs, the IPP server may also close the connection to
prevent the client from continuing the request.
To provide compatability with such servers, IPP clients MAY support the
ability to determine CONTENT_LENGTH and resubmit the job if error 411 or
error 413 is encountered in response to a Chunked request.
--0__=t7VSzjraEioSAnKox0sN0hBfMUqMJ7P5vaDR2nCfSRPhWpSLn6b1tfMO
Content-type: text/html;
name="att-1.htm"
Content-Disposition: attachment; filename="att-1.htm"
Content-transfer-encoding: base64
Content-Description: Internet HTML
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMi8vRU4iPg0KPEhUTUw+
DQo8SEVBRD4NCjxNRVRBIEhUVFAtRVFVSVY9IkNvbnRlbnQtVHlwZSIgQ09OVEVOVD0idGV4dC9o
dG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPg0KPE1FVEEgTkFNRT0iR2VuZXJhdG9yIiBDT05URU5U
PSJNUyBFeGNoYW5nZSBTZXJ2ZXIgdmVyc2lvbiA1LjUuMjIzMi4wIj4NCjxUSVRMRT5SRTogSVBQ
Jmd0OyBDaHVua2luZyBFeHBsYW5hdGlvbjwvVElUTEU+DQo8L0hFQUQ+DQo8Qk9EWT4NCg0KPFA+
PEZPTlQgU0laRT0yPkkgbGlrZSBCaWxsJ3Mgc3VnZ2VzdGlvbnMgb24gSGFycnkncyBvcmlnaW5h
bC48L0ZPTlQ+DQo8L1A+DQoNCjxQPjxGT05UIFNJWkU9Mj4xLiBJJ2QgbGlrZSB0byBjbGFyaWZ5
IHRoZSBsYXN0IHBhcmFncmFwaCBvZiB0aGUgZmlyc3Qgc2VjdGlvbiB0byBtYWtlIHN1cmUgdGhh
dCBpdHMgSFRUUCBQT1NUIGNodW5rZWQgcmVxdWVzdHMgdGhhdCB3ZSBhcmUgdGFsa2luZyBhYm91
dC4mbmJzcDsgKFNvbWUgaW1wbGVtZW50YXRpb25zIHN1cHBvcnQgY2h1bmtlZCBHRVQgcmVzcG9u
c2VzLCBidXQgbm90IGNodW5rZWQgUE9TVCByZXF1ZXN0cykuPC9GT05UPjwvUD4NCg0KPFA+PEZP
TlQgU0laRT0yPlNvIGNoYW5nZTo8L0ZPTlQ+DQo8L1A+DQoNCjxQPjxGT05UIFNJWkU9Mj5JdCBp
cyBlbmNvdXJhZ2VkIHRoYXQgYWxsIElQUCBzZXJ2ZXJzIHV0aWxpemUgSFRUUDEuMSBzZXJ2ZXJz
IHRoYXQgc3VwcG9ydDwvRk9OVD4NCjxCUj48Rk9OVCBTSVpFPTI+Y2h1bmtpbmcuIDwvRk9OVD4N
CjwvUD4NCg0KPFA+PEZPTlQgU0laRT0yPnRvOjwvRk9OVD4NCjwvUD4NCg0KPFA+PEZPTlQgU0la
RT0yPkl0IGlzIGVuY291cmFnZWQgdGhhdCBhbGwgSVBQIHNlcnZlcnMgdXRpbGl6ZSBIVFRQMS4x
IHNlcnZlcnMgdGhhdCBzdXBwb3J0PC9GT05UPg0KPEJSPjxGT05UIFNJWkU9Mj5jaHVua2luZyBv
ZiBQT1NUIHJlcXVlc3RzLiA8L0ZPTlQ+DQo8L1A+DQo8QlI+DQo8QlI+DQoNCjxQPjxGT05UIFNJ
WkU9Mj4yLiBJbiBhZGRpdGlvbiwgSSdkIGxpa2UgdG8gbWFrZSB0aGUgbGFzdCBwYXJhZ3JhcGgg
b2YgdGhlIHNlY29uZCBzZWN0aW9uIHRvIGJlIGFuIGVuY291cmFnZW1lbnQsIGp1c3QgbGlrZSB0
aGUgbGFzdCBwYXJhZ3JhcGggb2YgdGhlIGZpcnN0IHNlY3Rpb24sIHJhdGhlciB0aGFuIGp1c3Qg
YSBNQVkuJm5ic3A7IFdoYXQgZG8geW91IHRoaW5rPzwvRk9OVD48L1A+DQoNCjxQPjxGT05UIFNJ
WkU9Mj5TbyBjaGFuZ2U6PC9GT05UPg0KPC9QPg0KDQo8UD48Rk9OVCBTSVpFPTI+VG8gcHJvdmlk
ZSBjb21wYXRhYmlsaXR5IHdpdGggc3VjaCBzZXJ2ZXJzLCBJUFAgY2xpZW50cyBNQVkgc3VwcG9y
dCB0aGU8L0ZPTlQ+DQo8QlI+PEZPTlQgU0laRT0yPmFiaWxpdHkgdG8gZGV0ZXJtaW5lIENPTlRF
TlRfTEVOR1RIIGFuZCByZXN1Ym1pdCB0aGUgam9iIGlmIGVycm9yIDQxMSBvcjwvRk9OVD4NCjxC
Uj48Rk9OVCBTSVpFPTI+ZXJyb3IgNDEzIGlzIGVuY291bnRlcmVkIGluIHJlc3BvbnNlIHRvIGEg
Q2h1bmtlZCByZXF1ZXN0LjwvRk9OVD4NCjwvUD4NCg0KPFA+PEZPTlQgU0laRT0yPnRvOjwvRk9O
VD4NCjwvUD4NCg0KPFA+PEZPTlQgU0laRT0yPlRvIHByb3ZpZGUgY29tcGF0YWJpbGl0eSB3aXRo
IHN1Y2ggc2VydmVycywgaXQgaXMgZW5jb3VyYWdlZCB0aGF0IElQUCBjbGllbnRzIHN1cHBvcnQg
dGhlPC9GT05UPg0KPEJSPjxGT05UIFNJWkU9Mj5hYmlsaXR5IHRvIGRldGVybWluZSBDT05URU5U
X0xFTkdUSCBhbmQgcmVzdWJtaXQgdGhlIGpvYiBpZiBlcnJvciA0MTEgb3I8L0ZPTlQ+DQo8QlI+
PEZPTlQgU0laRT0yPmVycm9yIDQxMyBpcyBlbmNvdW50ZXJlZCBpbiByZXNwb25zZSB0byBhIENo
dW5rZWQgcmVxdWVzdC48L0ZPTlQ+DQo8L1A+DQoNCjxQPjxGT05UIFNJWkU9Mj5Paz88L0ZPTlQ+
DQo8L1A+DQoNCjxQPjxGT05UIFNJWkU9Mj5Ub20gSGFzdGluZ3M8L0ZPTlQ+DQo8L1A+DQo8QlI+
DQo8QlI+DQo8QlI+DQoNCjxQPjxGT05UIFNJWkU9Mj5IZXJlIGlzIEJpbGwncyBjb21wbGV0ZSB0
ZXh0OjwvRk9OVD4NCjwvUD4NCg0KPFA+PEZPTlQgU0laRT0yPlBhcmFncmFwaCBvbiBQcm9ibGVt
cyB3aXRoIHRoZSBVc2Ugb2YgQ0dJPC9GT05UPg0KPC9QPg0KDQo8UD48Rk9OVCBTSVpFPTI+UkZD
MjA2OCByZXF1aXJlcyBIVFRQMS4xIFNlcnZlcnMgdG8gc3VwcG9ydCBib3RoIENvbnRlbnQgTGVu
Z3RoIGFuZDwvRk9OVD4NCjxCUj48Rk9OVCBTSVpFPTI+Q2h1bmtpbmcgZm9yIGFsbCByZXF1ZXN0
cy4mbmJzcDsgVGhlIHVzZSBvZiBjaHVua2luZyByYXRoZXIgdGhhbiBkZXRlcm1pbmluZzwvRk9O
VD4NCjxCUj48Rk9OVCBTSVpFPTI+Q29udGVudCBMZW5ndGggc2hvdWxkIGZhY2lsaXRhdGUgdGhl
IHRyYW5zbWlzc2lvbiBvZiBsYXJnZSwgaW5kZXRlcm1pbmF0ZTwvRk9OVD4NCjxCUj48Rk9OVCBT
SVpFPTI+bGVuZ3RoIHByaW50IGpvYnMuIDwvRk9OVD4NCjwvUD4NCg0KPFA+PEZPTlQgU0laRT0y
PkNHSSwgb24gdGhlIG90aGVyIGhhbmQsIG1hbmRhdGVzIHRoZSBwcmVzZW5jZSBvZiZuYnNwOyB0
aGUgQ09OVEVOVF9MRU5HVEg8L0ZPTlQ+DQo8QlI+PEZPTlQgU0laRT0yPmVudmlyb25tZW50IHZh
cmlhYmxlLiBMYXJnZWx5IGR1ZSB0byB0aGlzIEhUVFAxLjEgLyBDR0kgY29uZmxpY3QsIEhUVFAx
LjE8L0ZPTlQ+DQo8QlI+PEZPTlQgU0laRT0yPnNlcnZlciBpbXBsZW1lbnRhdGlvbnMgZXhpc3Qg
dGhhdCBkbyBub3Qgc3VwcG9ydCBDaHVua2luZyBmb3IgdGhlIEhUVFAgKElQUCk8L0ZPTlQ+DQo8
QlI+PEZPTlQgU0laRT0yPlBPU1QuPC9GT05UPg0KPC9QPg0KDQo8UD48Rk9OVCBTSVpFPTI+SXQg
aXMgZW5jb3VyYWdlZCB0aGF0IGFsbCBJUFAgc2VydmVycyB1dGlsaXplIEhUVFAxLjEgc2VydmVy
cyB0aGF0IHN1cHBvcnQ8L0ZPTlQ+DQo8QlI+PEZPTlQgU0laRT0yPmNodW5raW5nLiA8L0ZPTlQ+
DQo8L1A+DQo8QlI+DQoNCjxQPjxGT05UIFNJWkU9Mj5QYXJhZ3JhcGggb24gSVBQIENsaWVudCBI
YW5kbGluZyBvZiBOb24tQ2h1bmtpbmcgU2VydmVyczwvRk9OVD4NCjwvUD4NCg0KPFA+PEZPTlQg
U0laRT0yPlJGQzIwNjggcmVxdWlyZXMgSFRUUDEuMSBTZXJ2ZXJzIHRvIHN1cHBvcnQgYm90aCBD
b250ZW50IExlbmd0aCBhbmQ8L0ZPTlQ+DQo8QlI+PEZPTlQgU0laRT0yPkNodW5raW5nIGZvciBh
bGwgcmVxdWVzdHMuJm5ic3A7IEhvd2V2ZXIsIHNvbWUgSVBQIHNlcnZlcnMgbWF5IGV4aXN0IHRo
YXQ8L0ZPTlQ+DQo8QlI+PEZPTlQgU0laRT0yPmRvIG5vdCBzdXBwb3J0IENodW5raW5nLiBJbiB0
aGlzIGNhc2UsIHRoZSBJUFAgc2VydmVyIG1heSByZXR1cm4gZXJyb3I8L0ZPTlQ+DQo8QlI+PEZP
TlQgU0laRT0yPjQxMShMZW5ndGggUmVxdWlyZWQpIGluIHJlc3BvbnNlIHRvIHRoZSBIVFRQIFBP
U1QuPC9GT05UPg0KPC9QPg0KDQo8UD48Rk9OVCBTSVpFPTI+RnVydGhlciwmbmJzcDsgc29tZSBJ
UFAgc2VydmVycyBtYXkgaW1wbGVtZW50IGEgZmlsdGVyLWFuZC1idWZmZXIgYXBwcm9hY2ggdG88
L0ZPTlQ+DQo8QlI+PEZPTlQgU0laRT0yPmRldGVybWluZSBDT05URU5UX0xFTkdUSCBmcm9tIGEg
Y2h1bmtlZCBlbmNvZGluZyBiZWZvcmUgcGFzc2luZyB0aGUgZGVjb2RlZDwvRk9OVD4NCjxCUj48
Rk9OVCBTSVpFPTI+cmVxdWVzdCBib2R5IHRvIGEgQ0dJIGFwcGxpY2F0aW9uLiZuYnNwOyBJZiB0
aGUgYnVmZmVyZWQgcmVxdWVzdCBncm93cyB0b28gbGFyZ2UsPC9GT05UPg0KPEJSPjxGT05UIFNJ
WkU9Mj50aGUgc2VydmVyIG1heSByZWplY3QgdGhlIHJlcXVlc3Qgd2l0aCBzdGF0dXMgY29kZSA0
MTMgKFJlcXVlc3QgRW50aXR5IFRvbzwvRk9OVD4NCjxCUj48Rk9OVCBTSVpFPTI+TGFyZ2UpLiBJ
ZiB0aGlzIG9jY3VycywgdGhlIElQUCBzZXJ2ZXIgbWF5IGFsc28gY2xvc2UgdGhlIGNvbm5lY3Rp
b24gdG88L0ZPTlQ+DQo8QlI+PEZPTlQgU0laRT0yPnByZXZlbnQgdGhlIGNsaWVudCBmcm9tIGNv
bnRpbnVpbmcgdGhlIHJlcXVlc3QuIDwvRk9OVD4NCjwvUD4NCg0KPFA+PEZPTlQgU0laRT0yPlRv
IHByb3ZpZGUgY29tcGF0YWJpbGl0eSB3aXRoIHN1Y2ggc2VydmVycywgSVBQIGNsaWVudHMgTUFZ
IHN1cHBvcnQgdGhlPC9GT05UPg0KPEJSPjxGT05UIFNJWkU9Mj5hYmlsaXR5IHRvIGRldGVybWlu
ZSBDT05URU5UX0xFTkdUSCBhbmQgcmVzdWJtaXQgdGhlIGpvYiBpZiBlcnJvciA0MTEgb3I8L0ZP
TlQ+DQo8QlI+PEZPTlQgU0laRT0yPmVycm9yIDQxMyBpcyBlbmNvdW50ZXJlZCBpbiByZXNwb25z
ZSB0byBhIENodW5rZWQgcmVxdWVzdC48L0ZPTlQ+DQo8L1A+DQoNCjwvQk9EWT4NCjwvSFRNTD4N
Cg==
--0__=t7VSzjraEioSAnKox0sN0hBfMUqMJ7P5vaDR2nCfSRPhWpSLn6b1tfMO--