Changing the sequence of body send execution.
Request state ready_handler required for further websocket events processing. It is not required for regular response transferring.
This commit is contained in:
@@ -908,7 +908,6 @@ nxt_h1p_request_header_send(nxt_task_t *task, nxt_http_request_t *r)
|
|||||||
nxt_h1proto_t *h1p;
|
nxt_h1proto_t *h1p;
|
||||||
const nxt_str_t *status;
|
const nxt_str_t *status;
|
||||||
nxt_http_field_t *field;
|
nxt_http_field_t *field;
|
||||||
nxt_event_engine_t *engine;
|
|
||||||
u_char buf[UNKNOWN_STATUS_LENGTH];
|
u_char buf[UNKNOWN_STATUS_LENGTH];
|
||||||
|
|
||||||
static const char chunked[] = "Transfer-Encoding: chunked\r\n";
|
static const char chunked[] = "Transfer-Encoding: chunked\r\n";
|
||||||
@@ -1031,12 +1030,7 @@ nxt_h1p_request_header_send(nxt_task_t *task, nxt_http_request_t *r)
|
|||||||
c->write = header;
|
c->write = header;
|
||||||
c->write_state = &nxt_h1p_request_send_state;
|
c->write_state = &nxt_h1p_request_send_state;
|
||||||
|
|
||||||
engine = task->thread->engine;
|
nxt_conn_write(task->thread->engine, c);
|
||||||
|
|
||||||
nxt_work_queue_add(&engine->fast_work_queue, r->state->ready_handler,
|
|
||||||
task, r, NULL);
|
|
||||||
|
|
||||||
nxt_conn_write(engine, c);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -51,9 +51,12 @@ nxt_http_request_error(nxt_task_t *task, nxt_http_request_t *r,
|
|||||||
r->resp.content_length = NULL;
|
r->resp.content_length = NULL;
|
||||||
r->resp.content_length_n = nxt_length(error);
|
r->resp.content_length_n = nxt_length(error);
|
||||||
|
|
||||||
|
nxt_http_request_header_send(task, r);
|
||||||
|
|
||||||
r->state = &nxt_http_request_send_error_body_state;
|
r->state = &nxt_http_request_send_error_body_state;
|
||||||
|
|
||||||
nxt_http_request_header_send(task, r);
|
nxt_work_queue_add(&task->thread->engine->fast_work_queue,
|
||||||
|
nxt_http_request_send_error_body, task, r, NULL);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
@@ -65,7 +68,6 @@ fail:
|
|||||||
static const nxt_http_request_state_t nxt_http_request_send_error_body_state
|
static const nxt_http_request_state_t nxt_http_request_send_error_body_state
|
||||||
nxt_aligned(64) =
|
nxt_aligned(64) =
|
||||||
{
|
{
|
||||||
.ready_handler = nxt_http_request_send_error_body,
|
|
||||||
.error_handler = nxt_http_request_error_handler,
|
.error_handler = nxt_http_request_error_handler,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -3540,9 +3540,14 @@ nxt_router_response_ready_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg,
|
|||||||
nxt_buf_chain_add(&r->out, b);
|
nxt_buf_chain_add(&r->out, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nxt_http_request_header_send(task, r);
|
||||||
|
|
||||||
r->state = &nxt_http_request_send_state;
|
r->state = &nxt_http_request_send_state;
|
||||||
|
|
||||||
nxt_http_request_header_send(task, r);
|
if (r->out) {
|
||||||
|
nxt_work_queue_add(&task->thread->engine->fast_work_queue,
|
||||||
|
nxt_http_request_send_body, task, r, NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -3558,7 +3563,6 @@ fail:
|
|||||||
static const nxt_http_request_state_t nxt_http_request_send_state
|
static const nxt_http_request_state_t nxt_http_request_send_state
|
||||||
nxt_aligned(64) =
|
nxt_aligned(64) =
|
||||||
{
|
{
|
||||||
.ready_handler = nxt_http_request_send_body,
|
|
||||||
.error_handler = nxt_http_request_error_handler,
|
.error_handler = nxt_http_request_error_handler,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user