Changes with Apache 2.3.0
[Remove entries to the current 2.0 and 2.2 section below, when backported]
+ *) Added new connection states for handler and write completion
+ [Brian Pane]
+
*) mod_proxy_ajp: Do not spool the entire response from AJP backend before
sending it up the filter chain. PR37100. [Ruediger Pluem]
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;
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. Stay in READ_REQUEST_LINE state
+ * and stay in the loop
+ */
+ cs->state = CONN_STATE_READ_REQUEST_LINE;
+ }
apr_pool_destroy(r->pool);
}
static int ap_process_http_connection(conn_rec *c)
{
request_rec *r;
+ conn_state_t *cs = c->cs;
apr_socket_t *csd = NULL;
/*
/* process the request if it was read without error */
ap_update_child_status(c->sbh, SERVER_BUSY_WRITE, r);
- if (r->status == HTTP_OK)
+ if (r->status == HTTP_OK) {
+ cs->state = CONN_STATE_HANDLER;
ap_process_request(r);
+ }
if (ap_extended_status)
ap_increment_counts(c->sbh, r);
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;
}