Have a question about past design decisions regarding Apache.

My question has come about due to a slightly heated discussion over
chunked transfer encoding and its application to response content. In
the mod_wsgi module I am implementing for Apache I preserve the
default behaviour of Apache which is not to switch on chunked transfer
encoding for response content. Because the Python WSGI specification
that the module is implementing an adapter for doesn't itself provide
a way for an application to indicate that it wants chunked transfer
encoding to be used, I have as a convenience provided a directive to
control it. The default for the directive is Off (preserving default
behaviour of Apache) with other values being On, which is always
enable it, ie., set r->chunked to 1 always, and Auto, which will only
set r->chunked to 1 if there is no content length header provided for
the response by the application.

On the WSGI list though, one person has labeled the directive as
pointless. Their belief is that a quality HTTP server supporting
HTTP/1.1 should always behave in the Auto mode above. Ie., if content
length header has not been specified, that the web server should by
itself decide to enable chunked transfer encoding. Obviously then he
would have to feel that the default behaviour of Apache is wrong.

Thus my question is, why when Apache was updated to support HTTP/1.1
did it just preserve the HTTP/1.0 type behaviour and not in cases
where it could automatically apply chunked transfer encoding to the
response, apply it?

The person on the WSGI list is more or less claiming that there would
be no harm in a web server always applying chunked transfer encoding
to a response which doesn't specify a content length, of course
providing it is a HTTP/1.1 client, but something tells me that this
doesn't sound quite right and there must be good reasons why Apache
doesn't do it. Is this persons claim reasonable, or are there good
reasons why one wouldn't want to use chunked transfer encoding on
responses with no content length header and thus why Apache requires
r->chunked to be set explicitly by an application to enable it.

Thanks in advance for any feedback and hopefully this question about
how Apache is designed isn't seen as being off topic for the list. :-)

Graham

Reply via email to