summaryrefslogtreecommitdiffstats
path: root/modules/http/http_core.c
diff options
context:
space:
mode:
authorBrian Pane <brianp@apache.org>2005-10-24 05:33:14 +0200
committerBrian Pane <brianp@apache.org>2005-10-24 05:33:14 +0200
commitcb0e5db86f05e4851a7b85d24abece63297bbf7b (patch)
tree1f8841c80ce1634cc2636d44d313b458b0031af1 /modules/http/http_core.c
parentRedesign of request cleanup and logging to use End-Of-Request bucket (diff)
downloadapache2-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.c20
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;