1
0
mirror of https://github.com/apache/httpd.git synced 2025-08-07 04:02:58 +03:00

The Event MPM.

Designed to minimize Apache's KeepAlive overhead.

This MPM depends on the current APR-trunk for new features added to 
the apr_pollset interface. Currently the underlying operating
system must support KQueue or EPoll.

Status:
  Should work as a drop in replacement for all non-ssl servers.
  SSL Requests that use HTTP 1.1 Pipelining do not currently work.

Testing:
  I have tested it with Linux 2.6, FreeBSD 5.2.1, and OS X 10.3.
  
Originally based on the patch by Greg Ames.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@105919 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Paul Querna
2004-11-20 02:52:36 +00:00
parent f56630d956
commit 34959f29db
14 changed files with 3192 additions and 6 deletions

View File

@@ -205,9 +205,17 @@ static void check_pipeline_flush(request_rec *r)
*/
/* ### shouldn't this read from the connection input filters? */
/* ### is zero correct? that means "read one line" */
if (r->connection->keepalive == AP_CONN_CLOSE ||
ap_get_brigade(r->input_filters, bb, AP_MODE_EATCRLF,
if (r->connection->keepalive != AP_CONN_CLOSE) {
if (ap_get_brigade(r->input_filters, bb, AP_MODE_EATCRLF,
APR_NONBLOCK_READ, 0) != APR_SUCCESS) {
c->data_in_input_filters = 0; /* we got APR_EOF or an error */
}
else {
c->data_in_input_filters = 1;
return; /* don't flush */
}
}
apr_bucket *e = apr_bucket_flush_create(c->bucket_alloc);
/* We just send directly to the connection based filters. At
@@ -218,7 +226,6 @@ static void check_pipeline_flush(request_rec *r)
*/
APR_BRIGADE_INSERT_HEAD(bb, e);
ap_pass_brigade(r->connection->output_filters, bb);
}
}
void ap_process_request(request_rec *r)