]> granicus.if.org Git - apache/commit
core: Limit to ten the number of tolerated empty lines between request,
authorYann Ylavic <ylavic@apache.org>
Thu, 22 Oct 2015 20:26:12 +0000 (20:26 +0000)
committerYann Ylavic <ylavic@apache.org>
Thu, 22 Oct 2015 20:26:12 +0000 (20:26 +0000)
commitf9b56afc0e79ac8ae037827bdd9fa1f85a45068d
tree1a99817fddb6b75dd60756ba2a33b66da9ce773e
parent306542f55f696caf5ae1ce0e679d894e1bb78ad6
core: Limit to ten the number of tolerated empty lines between request,
and consume them before the pipelining check to avoid possible response
delay when reading the next request without flushing.

Before this commit, the maximum number of empty lines was the same as
configured LimitRequestFields, defaulting to 100, which was way too much.
We now use a fixed/hard limit of 10 (DEFAULT_LIMIT_BLANK_LINES).

check_pipeline() is changed to check for (up to the limit) and comsume the
trailing [CR]LFs so that they won't be interpreted as pipelined requests,
otherwise we would block on the next read without flushing data, and hence
possibly delay pending response(s) until the next/real request comes in or
the keepalive timeout expires.

Finally, when the maximum number of empty line is reached in
read_request_line(), or that request line does not contains at least a method
and an (valid) URI, we can fail early and avoid some failure detected in
further processing.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1710095 13f79535-47bb-0310-9956-ffa450edef68
CHANGES
include/httpd.h
modules/http/http_request.c
server/protocol.c