[Web-SIG] wsgiref.validate allows wsgi.input.read() with no argument
Graham Dumpleton
graham.dumpleton at gmail.com
Fri Dec 12 23:52:09 CET 2008
2008/12/13 Ian Bicking <ianb at colorstudy.com>:
> Graham Dumpleton wrote:
>>
>> Just noticed that although WSGI PEP doesn't specifically mention that
>> argument to read() on wsgi.input is optional, wsgiref.validate allows
>> calling read() with no argument.
>>
>>> From wsgiref.validate:
>>
>> """
>> * That wsgi.input is used properly:
>>
>> - .read() is called with zero or one argument
>>
>> class InputWrapper:
>>
>> def read(self, *args):
>> assert_(len(args) <= 1)
>> v = self.input.read(*args)
>> assert_(type(v) is type(""))
>> return v
>> """
>>
>> Of course, the issue is still that WSGI PEP says:
>>
>> """The server is not required to read past the client's specified
>> Content-Length, and ***is allowed to simulate an end-of-file condition
>> if the application attempts to read past that point***."""
>
> An application that relies on the server to simulate end-of-file will be a
> broken application on some servers. This is not an uncommon problem.
> Therefore the validator tests for this case; if you want an application
> that actually works consistently, you shouldn't do
> environ['wsgi.input'].read().
The validator does not test for that case, that is what I am pointing
out. The validator allows read() to be called with no argument.
Graham
More information about the Web-SIG
mailing list