]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Added new connection states CONN_STATE_HANDLER and CONN_STATE_WRITE_COMPLETION.
authorBrian Pane <brianp@apache.org>
Mon, 12 Sep 2005 00:29:10 +0000 (00:29 +0000)
committerBrian Pane <brianp@apache.org>
Mon, 12 Sep 2005 00:29:10 +0000 (00:29 +0000)
Also, core_create_conn() now initializes the conn_state within the newly
created connection.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/async-dev@280221 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
include/httpd.h
modules/http/http_core.c
server/core.c

diff --git a/CHANGES b/CHANGES
index 4be46983c10b2ebf2f141a5b07d67c658f721d5e..32a206fe22e497e7d59e4b6744443846d5500d3d 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,4 +1,9 @@
                                                         -*- coding: utf-8 -*-
+Changes in Apache 2.3.0 async-dev R&D branch
+
+  *) Added new connection states for handler and write completion
+     [Brian Pane]
+
 Changes with Apache 2.3.0
   [Remove entries to the current 2.0 and 2.2 section below, when backported]
 
index 7f08b92d1dd39d9ae833634d4c5392ca36236356..0cb68df84719c9611582913947210306a6f02d21 100644 (file)
@@ -1074,6 +1074,8 @@ struct conn_rec {
 typedef enum  {
     CONN_STATE_CHECK_REQUEST_LINE_READABLE,
     CONN_STATE_READ_REQUEST_LINE,
+    CONN_STATE_HANDLER,
+    CONN_STATE_WRITE_COMPLETION,
     CONN_STATE_LINGER,
 } conn_state_e;
 
index 9dcee75697e3133cd234bc0ff24520fe0ddb9f3d..805129f55761b785be5a7047138b5ec6b866c9c2 100644 (file)
@@ -123,6 +123,7 @@ static int ap_process_http_async_connection(conn_rec *c)
                                                        
             ap_update_child_status(c->sbh, SERVER_BUSY_WRITE, r);
             if (r->status == HTTP_OK)
+                cs->state = CONN_STATE_HANDLER;
                 ap_process_request(r);
 
             if (ap_extended_status)
@@ -135,10 +136,12 @@ static int ap_process_http_async_connection(conn_rec *c)
             else if (!c->data_in_input_filters) {
                 cs->state = CONN_STATE_CHECK_REQUEST_LINE_READABLE;
             }
-
-            /* else we are pipelining.  Stay in READ_REQUEST_LINE state
-             *  and stay in the loop
-             */
+            else {
+                /* else we are pipelining.  Return to READ_REQUEST_LINE state
+                 *  and stay in the loop
+                 */
+                cs->state = CONN_STATE_READ_REQUEST_LINE;
+            }
 
             apr_pool_destroy(r->pool);
         }
index 41796c498e3872492192fc34e69fd6a843beb91c..589c770f630590540390f420312a230943cb193d 100644 (file)
@@ -3840,6 +3840,14 @@ static conn_rec *core_create_conn(apr_pool_t *ptrans, server_rec *server,
 
     c->id = id;
     c->bucket_alloc = alloc;
+    
+    c->cs = (conn_state_t *)apr_pcalloc(ptrans, sizeof(conn_state_t));
+    APR_RING_INIT(&(c->cs->timeout_list), conn_state_t, timeout_list);
+    c->cs->expiration_time = 0;
+    c->cs->state = CONN_STATE_CHECK_REQUEST_LINE_READABLE;
+    c->cs->c = c;
+    c->cs->p = ptrans;
+    c->cs->bucket_alloc = alloc;
 
     return c;
 }