attachment-0001

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2232.0">
<TITLE>RE: IPP&gt; Chunking Explanation</TITLE>
</HEAD>
<BODY>

<P><FONT SIZE=2>I like Bill's suggestions on Harry's original.</FONT>
</P>

<P><FONT SIZE=2>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.&nbsp; (Some implementations support chunked GET responses, but not chunked POST requests).</FONT></P>

<P><FONT SIZE=2>So change:</FONT>
</P>

<P><FONT SIZE=2>It is encouraged that all IPP servers utilize HTTP1.1 servers that support</FONT>
<BR><FONT SIZE=2>chunking. </FONT>
</P>

<P><FONT SIZE=2>to:</FONT>
</P>

<P><FONT SIZE=2>It is encouraged that all IPP servers utilize HTTP1.1 servers that support</FONT>
<BR><FONT SIZE=2>chunking of POST requests. </FONT>
</P>
<BR>
<BR>

<P><FONT SIZE=2>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.&nbsp; What do you think?</FONT></P>

<P><FONT SIZE=2>So change:</FONT>
</P>

<P><FONT SIZE=2>To provide compatability with such servers, IPP clients MAY support the</FONT>
<BR><FONT SIZE=2>ability to determine CONTENT_LENGTH and resubmit the job if error 411 or</FONT>
<BR><FONT SIZE=2>error 413 is encountered in response to a Chunked request.</FONT>
</P>

<P><FONT SIZE=2>to:</FONT>
</P>

<P><FONT SIZE=2>To provide compatability with such servers, it is encouraged that IPP clients support the</FONT>
<BR><FONT SIZE=2>ability to determine CONTENT_LENGTH and resubmit the job if error 411 or</FONT>
<BR><FONT SIZE=2>error 413 is encountered in response to a Chunked request.</FONT>
</P>

<P><FONT SIZE=2>Ok?</FONT>
</P>

<P><FONT SIZE=2>Tom Hastings</FONT>
</P>
<BR>
<BR>
<BR>

<P><FONT SIZE=2>Here is Bill's complete text:</FONT>
</P>

<P><FONT SIZE=2>Paragraph on Problems with the Use of CGI</FONT>
</P>

<P><FONT SIZE=2>RFC2068 requires HTTP1.1 Servers to support both Content Length and</FONT>
<BR><FONT SIZE=2>Chunking for all requests.&nbsp; The use of chunking rather than determining</FONT>
<BR><FONT SIZE=2>Content Length should facilitate the transmission of large, indeterminate</FONT>
<BR><FONT SIZE=2>length print jobs. </FONT>
</P>

<P><FONT SIZE=2>CGI, on the other hand, mandates the presence of&nbsp; the CONTENT_LENGTH</FONT>
<BR><FONT SIZE=2>environment variable. Largely due to this HTTP1.1 / CGI conflict, HTTP1.1</FONT>
<BR><FONT SIZE=2>server implementations exist that do not support Chunking for the HTTP (IPP)</FONT>
<BR><FONT SIZE=2>POST.</FONT>
</P>

<P><FONT SIZE=2>It is encouraged that all IPP servers utilize HTTP1.1 servers that support</FONT>
<BR><FONT SIZE=2>chunking. </FONT>
</P>
<BR>

<P><FONT SIZE=2>Paragraph on IPP Client Handling of Non-Chunking Servers</FONT>
</P>

<P><FONT SIZE=2>RFC2068 requires HTTP1.1 Servers to support both Content Length and</FONT>
<BR><FONT SIZE=2>Chunking for all requests.&nbsp; However, some IPP servers may exist that</FONT>
<BR><FONT SIZE=2>do not support Chunking. In this case, the IPP server may return error</FONT>
<BR><FONT SIZE=2>411(Length Required) in response to the HTTP POST.</FONT>
</P>

<P><FONT SIZE=2>Further,&nbsp; some IPP servers may implement a filter-and-buffer approach to</FONT>
<BR><FONT SIZE=2>determine CONTENT_LENGTH from a chunked encoding before passing the decoded</FONT>
<BR><FONT SIZE=2>request body to a CGI application.&nbsp; If the buffered request grows too large,</FONT>
<BR><FONT SIZE=2>the server may reject the request with status code 413 (Request Entity Too</FONT>
<BR><FONT SIZE=2>Large). If this occurs, the IPP server may also close the connection to</FONT>
<BR><FONT SIZE=2>prevent the client from continuing the request. </FONT>
</P>

<P><FONT SIZE=2>To provide compatability with such servers, IPP clients MAY support the</FONT>
<BR><FONT SIZE=2>ability to determine CONTENT_LENGTH and resubmit the job if error 411 or</FONT>
<BR><FONT SIZE=2>error 413 is encountered in response to a Chunked request.</FONT>
</P>

</BODY>
</HTML>