Skip to content
Commit f70828d2 authored by Yann Ylavic's avatar Yann Ylavic
Browse files

Merge r1823047, r1824454, r1824463, r1824464, r1824497, r1824862, r1824877 from trunk:

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
parent a35bb6eb
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment