- From: Daniel Hellerstein <danielh@mailbox.econ.ag.gov>
- Date: Mon, 23 Mar 1998 11:58:27 -0500
- To: http-wg@cuckoo.hpl.hp.com
As the primary author of a free http/1.0+ web server (for OS/2)
with a goal of keeping the product reasonably up to date,
I have been sporadically following the http 1.1 drafts, related RFC's,
and the HTTP-WG mailing list. At the recommendation of several
working group members, I have read the rev. 03 of the draft; with an
eye toward what an implementor might have problems with. From
that viewpoint, consider the following comments:
) The importance of chunked coding -- add a note to 19.6
The default of persistent connections has major implications for the
delivery of dynamic documents,especially when compared to http
1.0. Although this is discussed in the draft, I believe that it
should be strongly emphasiszd. In particular, a paragraph should be
added to 19.6.1 (or 19.6.2). For example:
"Given that persistent connections are the http/1.1 default, special
care must be taken when dynamically generating output, especially
when earlier portions of content are sent to the client as they are
generated (say, to prevent automatic or human time-outs). In this
(and other) cases, there may be no way of knowing the final length
of content, hence a content-length header can not be added.
Hence, either the connection must be closed after transmittal of
content, or chunked coding must be used.
II) "Chunked" in the TE header -- clarify description
It is somewhat odd that:
i) Given that (section 3.6.1, and reiterated in
step 3 of 14.39)
"All HTTP/1.1 applications MUST be able to recieve and
decode the "chunked" transfer coding..."
ii) Also in (section 3.6.1, and reiterated in 14.39 and
14.40)
"A server using chunked transfer-coding in a response MUST
NOT use the trailer for other header fields than ... unless the
"chunked" transfer-coding is present ..in the TE field).
Since 1.1 apps (such as http/1.1 servers) must understand
"chunked", then point ii seems to mean (informally):
"the use of "chunked" in the TE field tells an http/1.1 server that
header fields other then Content-MD5 and Authentication-Info
(and Content-Length) may be included in the trailer".
Assuming I'm not misreading, it might be useful to
include this comment (or an appropriately formal
version).
III) Pipelining -- does order of execution matter?
Section 8.1.2.2 states:
"A server MUST send it's responses to those requests in the same
order that the request were recieved."
Does this imply that there should be no parallelism when processing
piplined requests: that request A should be completely answered
before request B is considered. Or, is parallel resolution of these
requests permitted, so long as order of return is serial (and follows
the order of requests).
IV) Closing connections
Section 8.1.4 states:
i) "When a client or server wishes to time-out, it SHOULD issue a
graceful close on the transport connection".
Does this imply some sort of action at the http level?
That is, should a 4xx (or 5xx) response be sent?
And what if this time out occurs in the middle of a response;
say,the early portion of a dynamic resource is sent, and then an
unexpectedly long delay occurs whilst resolving the remainder of
this dynamic resource (thus, a new response line & headers can
not be sent).
ii) "Servers SHOULD NOT close a connection in the middle of
transmitting a response, unless a network or client failure is
suspected".
Does that disallow a "total time per connection" server setting?
Even if an otherwise legitimate request is taking hours to resolve?
V) Minor points
* It might be useful to add in section 10.3.7
"The difference between 302 and 307 is that 307 insures (for
http 1.1 clients) that a redirection occurs without a change in
method."
*In 13.1.1, point 2, it is written:
"In the default case, this means it meets the least restrictive
freshness requirement..."
Shouldn't that be "most restrictive".
Daniel Hellerstein
danielH@econ.ag.gov
http://rpbcam.econ.ag.gov/srehttp
Received on Tuesday, 24 March 1998 06:40:46 UTC