brianp in httpd

Retiring from httpd development.

Revert the refactoring of the request read code
Return APR_EAGAIN instead of SSL_ERROR_WANT_READ from the mod_ssl filters;

the httpd core and other modules' filters don't know what SSL_ERROR_* means.

reverting vetoed commit r371227
Force blocking reads in mod_ssl when running in an async MPM

don't conceal EAGAIN in READBYTES mode
Buffer partial lines within ap_core_input_filter() when doing

AP_MODE_GETLINE reads on a nonblocking connection

Avoid setting r->the_request to NULL if the client sends too many blank lines.

Also, remove a bit of debug code.

Initial implementation of asynchronous read completion for Event MPM

Warning: SSL doesn't work, so these changes aren't ready to be merged

to the trunk yet.

Refactoring of ap_read_request() to store partial request state

in the request rec. The point of this is to allow asynchronous

MPMs do do nonblocking reads of requests. (Backported from the

async-read-dev branch)

Removed the destruction of the bucket allocator prior to

clearing the transaction pool. The bucket allocator will

now get destroyed when apr_pool_clear() invokes its cleanup

callback. With the old logic, memory corruption was possible

if the pool contained any brigades that referenced any

buckets allocated from the bucket allocator.

Added ap_read_async_request()...

At the moment, asynchronous MPMs still read the request headers

with the connection in blocking mode. To enable asynchronous

read completion, we'll need to make some changes in the Event MPM.

Free a temporary brigade in read_partial_request()
Remove old code that was ifdef'ed out in the last commit
Further cleanup of ap_get_mime_headers_core()
More refactoring: replace half of ap_get_mime_headers_core() with a

call to set_mime_header()

Removing the async-dev branch...

The nonblocking write completion code that was developed on this

branch has since been merged into the trunk.

Nonblocking read development currently is happening on the

async-read-dev branch.

Fix the handling of HTTP/0.9 requests

Fix the detection of request header limit errors in the refactored


More refactoring of ap_read_request() in preparation for

nonblocking read support.

WARNING: The code for handlng requests that exceed the field-length

or number-of-fields limits isn't complete in this commit.

    • ?
When computing the timeouts for keepalives and write completion,

get the current time _after_ processing the event that led to the

timeout, rather than before.

[forward-port of commit 349189 from the async-read-dev branch]

When computing the timeouts for keepalives and write completion,

get the current time _after_ processing the event that led to the

timeout, rather than before.

Refactor ap_read_request() to separate the parts that do socket reads

from the parts that update the request_rec. This is a step towards

nonblocking, event-driven read support.

new branch for experimenting with nonblocking reading of requests
remove an obsolete comment
Minor refactoring: move the creation of the pollset and associated

data structures outside of the listener thread function. The point

of this is to facilitate future experiments with different concurrency

models like Leader/Followers as potential alternatives to the current

Reactor design.

Moved the extended_status scoreboard update from ap_process_http_connection

to the EOR bucket destructor. Also, added some defensive code and comments

regarding r->pool lifetime to ap_process_http_connection.

Allocate the brigade containing the EOR bucket from the connection

pool, rather than the request pool, because the core output filter

may need to reference the brigade immediately after deleting the

EOR bucket (and thus the request pool). This fixes a coredump

encountered when running t/TEST on an httpd compiled with


Restore the socket timeout after setting it to zero for nonblocking

writes in ap_core_output_filter. (This fixes the mod_proxy errors

that the new core output filter had been causing.)

Async write completion for Event MPM

(backported from async-dev branch to 2.3 trunk)