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.
This commit is contained in:
Valentin Bartenev
2018-09-20 16:04:49 +03:00
parent 9f29ac9f3e
commit 510c2e15c5
2 changed files with 5 additions and 4 deletions

View File

@@ -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;
}
}