Skip to content
  • Jim Jagielski's avatar
    Merge r1710095, r1710105, r1711902 from trunk: · 9f9b598d
    Jim Jagielski authored
    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.
    
    
    core: follow up to r1710095.
    Simplify logic in check_pipeline(), and log unexpected errors.
    
    
    core: follow up to r1710095, r1710105.
    We can do this in a single (no inner) loop, and simplify again the logic.
    
    Submitted by: ylavic
    Reviewed/backported by: jim
    
    
    git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1716651 13f79535-47bb-0310-9956-ffa450edef68
    9f9b598d
To find the state of this project's repository at the time of any of these versions, check out the tags.