diff options
author | Valentin Bartenev <vbart@nginx.com> | 2018-09-20 16:04:49 +0300 |
---|---|---|
committer | Valentin Bartenev <vbart@nginx.com> | 2018-09-20 16:04:49 +0300 |
commit | 510c2e15c5b55a48f15f0ba680c5e82a2db5456f (patch) | |
tree | e1e5abb930a7e83426bc0b8dff951a0f9769d6c7 | |
parent | 9f29ac9f3e85b34317ab68ae297dabc6c6ffa6ae (diff) | |
download | unit-510c2e15c5b55a48f15f0ba680c5e82a2db5456f.tar.gz unit-510c2e15c5b55a48f15f0ba680c5e82a2db5456f.tar.bz2 |
Python: adjusted input.read(size) argument value interpretation.
Previously, passing 0 resulted in reading the whole body and all negative
values raised an exception.
Now the behaviour is in consistentance with io.RawIOBase.read() interface,
and passing 0 returns empty (byte) string, while -1 results in reading the
whole body.
-rw-r--r-- | src/nxt_python_wsgi.c | 8 | ||||
-rw-r--r-- | test/test_python_application.py | 1 |
2 files changed, 5 insertions, 4 deletions
diff --git a/src/nxt_python_wsgi.c b/src/nxt_python_wsgi.c index d925b33f..3a5f1913 100644 --- a/src/nxt_python_wsgi.c +++ b/src/nxt_python_wsgi.c @@ -1136,11 +1136,13 @@ nxt_py_input_read(nxt_py_input_t *self, PyObject *args) return NULL; } - return PyErr_Format(PyExc_ValueError, - "the read body size cannot be zero or less"); + if (size != -1) { + return PyErr_Format(PyExc_ValueError, + "the read body size cannot be zero or less"); + } } - if (size == 0 || size > (Py_ssize_t) ctx->req->content_length) { + if (size == -1 || size > (Py_ssize_t) ctx->req->content_length) { size = ctx->req->content_length; } } diff --git a/test/test_python_application.py b/test/test_python_application.py index 146223ec..f1e2cbf7 100644 --- a/test/test_python_application.py +++ b/test/test_python_application.py @@ -243,7 +243,6 @@ Connection: close self.assertEqual(self.post(body=body)['body'], body, 'input iter') - @unittest.expectedFailure def test_python_application_input_read_length(self): self.load('input_read_length') |