diff options
author | Brian Pane <brianp@apache.org> | 2005-10-24 05:33:14 +0200 |
---|---|---|
committer | Brian Pane <brianp@apache.org> | 2005-10-24 05:33:14 +0200 |
commit | cb0e5db86f05e4851a7b85d24abece63297bbf7b (patch) | |
tree | 1f8841c80ce1634cc2636d44d313b458b0031af1 /modules/http/http_core.c | |
parent | Redesign of request cleanup and logging to use End-Of-Request bucket (diff) | |
download | apache2-cb0e5db86f05e4851a7b85d24abece63297bbf7b.tar.xz apache2-cb0e5db86f05e4851a7b85d24abece63297bbf7b.zip |
Async write completion for Event MPM
(backported from async-dev branch to 2.3 trunk)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@327945 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'modules/http/http_core.c')
-rw-r--r-- | modules/http/http_core.c | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/modules/http/http_core.c b/modules/http/http_core.c index 1a76bc941a..fad09ef190 100644 --- a/modules/http/http_core.c +++ b/modules/http/http_core.c @@ -122,26 +122,18 @@ static int ap_process_http_async_connection(conn_rec *c) /* process the request if it was read without error */ ap_update_child_status(c->sbh, SERVER_BUSY_WRITE, r); - if (r->status == HTTP_OK) - ap_process_request(r); + if (r->status == HTTP_OK) { + cs->state = CONN_STATE_HANDLER; + ap_process_async_request(r); + } if (ap_extended_status) ap_increment_counts(c->sbh, r); - if (c->keepalive != AP_CONN_KEEPALIVE || c->aborted - || ap_graceful_stop_signalled()) { + if (cs->state != CONN_STATE_WRITE_COMPLETION) { + /* Something went wrong; close the connection */ cs->state = CONN_STATE_LINGER; } - else if (!c->data_in_input_filters) { - cs->state = CONN_STATE_CHECK_REQUEST_LINE_READABLE; - } - else { - /* else we are pipelining. Stay in READ_REQUEST_LINE state - * and stay in the loop - */ - cs->state = CONN_STATE_READ_REQUEST_LINE; - } - } else { /* ap_read_request failed - client may have closed */ cs->state = CONN_STATE_LINGER; |