diff --git a/http.c b/http.c index 53b58b41..3b947aae 100644 --- a/http.c +++ b/http.c @@ -948,7 +948,9 @@ evhttp_read_body(struct evhttp_connection *evcon, struct evhttp_request *req) evbuffer_remove_buffer(buf, req->input_buffer, n); } - if (req->body_size > req->evcon->max_body_size) { + if (req->body_size > req->evcon->max_body_size || + (!req->chunked && req->ntoread >= 0 && + (size_t)req->ntoread > req->evcon->max_body_size)) { /* failed body length test */ event_debug(("Request body is too long")); evhttp_connection_fail(evcon,