|
|
|
@ -159,9 +159,10 @@ connection* connection_new(worker *wrk) {
|
|
|
|
|
|
|
|
|
|
con->options = g_slice_copy(srv->option_count * sizeof(*srv->option_def_values), srv->option_def_values); |
|
|
|
|
|
|
|
|
|
request_init(&con->request, con->raw_in); |
|
|
|
|
request_init(&con->request); |
|
|
|
|
physical_init(&con->physical); |
|
|
|
|
response_init(&con->response); |
|
|
|
|
http_request_parser_init(&con->req_parser_ctx, &con->request, con->raw_in); |
|
|
|
|
|
|
|
|
|
con->keep_alive_data.link = NULL; |
|
|
|
|
con->keep_alive_data.timeout = 0; |
|
|
|
@ -203,6 +204,7 @@ void connection_reset(connection *con) {
|
|
|
|
|
request_reset(&con->request); |
|
|
|
|
physical_reset(&con->physical); |
|
|
|
|
response_reset(&con->response); |
|
|
|
|
http_request_parser_reset(&con->req_parser_ctx); |
|
|
|
|
|
|
|
|
|
if (con->keep_alive_data.link) { |
|
|
|
|
g_queue_delete_link(&con->wrk->keep_alive_queue, con->keep_alive_data.link); |
|
|
|
@ -256,6 +258,7 @@ void connection_reset_keep_alive(connection *con) {
|
|
|
|
|
request_reset(&con->request); |
|
|
|
|
physical_reset(&con->physical); |
|
|
|
|
response_reset(&con->response); |
|
|
|
|
http_request_parser_reset(&con->req_parser_ctx); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void connection_free(connection *con) { |
|
|
|
@ -287,6 +290,7 @@ void connection_free(connection *con) {
|
|
|
|
|
request_clear(&con->request); |
|
|
|
|
physical_clear(&con->physical); |
|
|
|
|
response_clear(&con->response); |
|
|
|
|
http_request_parser_clear(&con->req_parser_ctx); |
|
|
|
|
|
|
|
|
|
if (con->keep_alive_data.link && con->wrk) { |
|
|
|
|
g_queue_delete_link(&con->wrk->keep_alive_queue, con->keep_alive_data.link); |
|
|
|
@ -341,7 +345,7 @@ void connection_state_machine(connection *con) {
|
|
|
|
|
if (CORE_OPTION(CORE_OPTION_DEBUG_REQUEST_HANDLING).boolean) { |
|
|
|
|
CON_TRACE(con, "%s", "reading request header"); |
|
|
|
|
} |
|
|
|
|
switch(http_request_parse(con, &con->request.parser_ctx)) { |
|
|
|
|
switch(http_request_parse(con, &con->req_parser_ctx)) { |
|
|
|
|
case HANDLER_FINISHED: |
|
|
|
|
case HANDLER_GO_ON: |
|
|
|
|
connection_set_state(con, CON_STATE_VALIDATE_REQUEST_HEADER); |
|
|
|
|