Commit 1e90fd1a authored by Brian Pane's avatar Brian Pane
Browse files

Added new connection states CONN_STATE_HANDLER and CONN_STATE_WRITE_COMPLETION.

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
parent f34ac2e9
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
                                                        -*- 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]
+2 −0
Original line number Diff line number Diff line
@@ -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;

+7 −4
Original line number Diff line number Diff line
@@ -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
            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);
        }
+8 −0
Original line number Diff line number Diff line
@@ -3841,6 +3841,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;
}