diff options
| author | Andrei Belov <defan@nginx.com> | 2019-12-26 17:52:09 +0300 |
|---|---|---|
| committer | Andrei Belov <defan@nginx.com> | 2019-12-26 17:52:09 +0300 |
| commit | 35ff5ee1e82a03e57d625230173a84c829c13257 (patch) | |
| tree | c3dce5e8d50c8da9739f23b41a636931ad562e25 /src/nxt_h1proto.c | |
| parent | 0ec222bbb202194327c2e76d48f0b2608b37c162 (diff) | |
| parent | 55f8e31ed70910ef07db31d7f3c53b12774180f9 (diff) | |
| download | unit-1.14.0-1.tar.gz unit-1.14.0-1.tar.bz2 | |
Merged with the default branch.1.14.0-1
Diffstat (limited to 'src/nxt_h1proto.c')
| -rw-r--r-- | src/nxt_h1proto.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/nxt_h1proto.c b/src/nxt_h1proto.c index b07eaf84..8ce57893 100644 --- a/src/nxt_h1proto.c +++ b/src/nxt_h1proto.c @@ -1230,6 +1230,7 @@ nxt_h1p_request_header_send(nxt_task_t *task, nxt_http_request_t *r, c = h1p->conn; c->write = header; + h1p->conn_write_tail = &header->next; c->write_state = &nxt_h1p_request_send_state; if (body_handler != NULL) { @@ -1342,8 +1343,14 @@ nxt_h1p_request_send(nxt_task_t *task, nxt_http_request_t *r, nxt_buf_t *out) nxt_conn_write(task->thread->engine, c); } else { - nxt_buf_chain_add(&c->write, out); + *h1p->conn_write_tail = out; } + + while (out->next != NULL) { + out = out->next; + } + + h1p->conn_write_tail = &out->next; } @@ -1730,9 +1737,10 @@ nxt_h1p_idle_timeout(nxt_task_t *task, void *obj, void *data) static void nxt_h1p_idle_response(nxt_task_t *task, nxt_conn_t *c) { - u_char *p; - size_t size; - nxt_buf_t *out, *last; + u_char *p; + size_t size; + nxt_buf_t *out, *last; + nxt_h1proto_t *h1p; size = nxt_length(NXT_H1P_IDLE_TIMEOUT) + nxt_http_date_cache.size @@ -1762,6 +1770,9 @@ nxt_h1p_idle_response(nxt_task_t *task, nxt_conn_t *c) last->completion_handler = nxt_h1p_idle_response_sent; last->parent = c; + h1p = c->socket.data; + h1p->conn_write_tail = &last->next; + c->write = out; c->write_state = &nxt_h1p_timeout_response_state; |
