05-11-07 06:12 AM
Support for chunked transfer encoding on request content.
---------------------------------------------------------
Key: MODPYTHON-222
URL: https://issues.apache.org/jira/browse/MODPYTHON-222
Project: mod_python
Issue Type: New Feature
Components: core
Affects Versions: 3.3.1
Reporter: Graham Dumpleton
It is currently not possible to use chunked transfer encoding on request con
tent delivered to a mod_python request handler.
The use of chunked transfer encoding is explicitly blocked in C code by:
rc = ap_setup_client_block(self->request_rec, REQUEST_CHUNKED_ERROR);
To allow chunked transfer encoding instead of REQUEST_CHUNKED_ERROR it would
be necessary to supply REQUEST_CHUNKED_DECHUNK.
Problem is that it isn't that simple.
First off, the problems associated with MODPYTHON-212 have to be fixed with
code being able to cope with there being no content length.
The next issue is that req.read() method is currently documented as behaving
as:
If the len argument is negative or omitted, reads all data given by the clie
nt.
This means that can't have req.read() with no arguments mean give me everyth
ing that is currently available in input buffers as everyone currently expec
ts it to return everything sent by client. Thus, to be able to process strea
ming data one would have to
supply an amount of data that one wants to read. The code for that though wi
ll always try to ensure that that exact amount of data is read and will bloc
k if not enough and not end of input. A handler though may not want it to bl
ock and be happy with just
getting what is read and only expect it to block if nothing currently availa
ble.
In other words, the current specification for how req.read() behaves is inco
mpatible with what would be required to support chunked transfer encoding on
request content.
Not sure how this conflict can be resolved.
[ Post a follow-up to this message ]
|