• Yann Ylavic's avatar
    Merge r1823047, r1824454, r1824463, r1824464, r1824497, r1824862, r1824877 from trunk: · f70828d2
    Yann Ylavic authored
    mpm_event: move lingering close "sucker" from the listener to worker(s).
    
    This was the last non-constant time action performed by the listener thread.
    
    It's now handled by the worker thread directly after entering lingering close,
    which should directly address the cases when the socket is already closed
    remotely at that time, hence avoid more scheduling (it may be the common case
    for some scenarios).
    
    And it's only if the above would need blocking (i.e. more data to suck) that
    the socket is added to the pollset for the listener to re-schedule a worker
    later when ready. If no worker is available at that time then the socket is
    forcibly closed (similarly to what's done for keepalive connections in this
    case).
    
    Also, since process_lingering_close() is now called by a worker thread and
    with almost no depth in the call stack, we can grow the size of the "suck"
    buffer from 2K to 32K to potentially call recv() up to sixteen times less.
    
    
    mpm_event: follow up to r1823047.
    
    Update clogged counter on read_request retry too.
    
    
    mpm_event: follow up to r1823047: simplify "clogging" logic (reentrance).
    
    
    mpm_event: follow up to r1823047: complete state validation after processing.
    
    
    mpm_event: follow up to r1823047: CHANGES entry.
    
    
    mpm_event: follow up to r1823047 and r1824464.
    
    MMN bump for CONN_STATE_NUM, plus don't consider CONN_STATE_LINGER_* as valid
    states returned process_connection (never have been).
    
    
    mpm_event: follow up to r1823047 and r1824862.
    
    Revert (broken) functional change from r1824862.
    
    
    Submitted by: ylavic
    Reviewed by: ylavic, minfrin, jim
    
    
    git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1824879 13f79535-47bb-0310-9956-ffa450edef68
    f70828d2
To find the state of this project's repository at the time of any of these versions, check out the tags.