diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nxt_h1proto.c | 10 | ||||
-rw-r--r-- | src/nxt_http.h | 1 | ||||
-rw-r--r-- | src/nxt_http_request.c | 4 |
3 files changed, 13 insertions, 2 deletions
diff --git a/src/nxt_h1proto.c b/src/nxt_h1proto.c index 11e15af9..6d24bade 100644 --- a/src/nxt_h1proto.c +++ b/src/nxt_h1proto.c @@ -424,6 +424,12 @@ nxt_h1p_conn_request_init(nxt_task_t *task, void *obj, void *data) r->tls = c->u.tls; #endif + r->task = c->task; + task = &r->task; + c->socket.task = task; + c->read_timer.task = task; + c->write_timer.task = task; + ret = nxt_http_parse_request_init(&h1p->parser, r->mem_pool); if (nxt_fast_path(ret == NXT_OK)) { @@ -1485,6 +1491,10 @@ nxt_h1p_request_close(nxt_task_t *task, nxt_http_proto_t proto, nxt_router_conf_release(task, joint); c = h1p->conn; + task = &c->task; + c->socket.task = task; + c->read_timer.task = task; + c->write_timer.task = task; if (h1p->keepalive) { nxt_h1p_keepalive(task, h1p, c); diff --git a/src/nxt_http.h b/src/nxt_http.h index 7bc9a0a8..bbfaa33e 100644 --- a/src/nxt_http.h +++ b/src/nxt_http.h @@ -137,6 +137,7 @@ struct nxt_http_request_s { nxt_sockaddr_t *remote; nxt_sockaddr_t *local; void *tls; + nxt_task_t task; nxt_timer_t timer; void *timer_data; diff --git a/src/nxt_http_request.c b/src/nxt_http_request.c index 1f7a1796..394411a9 100644 --- a/src/nxt_http_request.c +++ b/src/nxt_http_request.c @@ -570,9 +570,9 @@ nxt_http_request_close_handler(nxt_task_t *task, void *obj, void *data) if (nxt_fast_path(proto.any != NULL)) { protocol = r->protocol; - nxt_mp_release(r->mem_pool); - nxt_http_proto[protocol].close(task, proto, conf); + + nxt_mp_release(r->mem_pool); } } |