# HG changeset patch # User Piotr Sikora <piotrsik...@google.com> # Date 1489111358 28800 # Thu Mar 09 18:02:38 2017 -0800 # Node ID 64d12a65309eca3859055a04eb02cc14f3b3168d # Parent 24b0f9f4ebfa560edd984146548ab07925dba73f HTTP/2: introduce stream->fake_connection.
No functional changes. Signed-off-by: Piotr Sikora <piotrsik...@google.com> diff -r 24b0f9f4ebfa -r 64d12a65309e src/http/v2/ngx_http_v2.c --- a/src/http/v2/ngx_http_v2.c +++ b/src/http/v2/ngx_http_v2.c @@ -1900,7 +1900,7 @@ ngx_http_v2_state_rst_stream(ngx_http_v2 stream->in_closed = 1; stream->out_closed = 1; - fc = stream->request->connection; + fc = stream->fake_connection; fc->error = 1; switch (status) { @@ -2293,7 +2293,7 @@ ngx_http_v2_state_window_update(ngx_http if (stream->exhausted) { stream->exhausted = 0; - wev = stream->request->connection->write; + wev = stream->fake_connection->write; wev->active = 0; wev->ready = 1; @@ -2328,7 +2328,7 @@ ngx_http_v2_state_window_update(ngx_http stream->waiting = 0; - wev = stream->request->connection->write; + wev = stream->fake_connection->write; wev->active = 0; wev->ready = 1; @@ -2444,17 +2444,18 @@ static u_char * ngx_http_v2_state_headers_save(ngx_http_v2_connection_t *h2c, u_char *pos, u_char *end, ngx_http_v2_handler_pt handler) { - ngx_event_t *rev; - ngx_http_request_t *r; + ngx_connection_t *fc; + ngx_http_v2_stream_t *stream; ngx_http_core_srv_conf_t *cscf; if (h2c->state.stream) { - r = h2c->state.stream->request; - rev = r->connection->read; - - if (!rev->timer_set) { - cscf = ngx_http_get_module_srv_conf(r, ngx_http_core_module); - ngx_add_timer(rev, cscf->client_header_timeout); + stream = h2c->state.stream; + fc = stream->fake_connection; + + if (!fc->read->timer_set) { + cscf = ngx_http_get_module_srv_conf(stream->request, + ngx_http_core_module); + ngx_add_timer(fc->read, cscf->client_header_timeout); } } @@ -2928,6 +2929,7 @@ ngx_http_v2_create_stream(ngx_http_v2_co stream->request = r; stream->connection = h2c; + stream->fake_connection = fc; h2scf = ngx_http_get_module_srv_conf(r, ngx_http_v2_module); @@ -3712,7 +3714,7 @@ ngx_http_v2_read_request_body(ngx_http_r } if (!buf) { - ngx_add_timer(r->connection->read, clcf->client_body_timeout); + ngx_add_timer(stream->fake_connection->read, clcf->client_body_timeout); } r->read_event_handler = ngx_http_v2_read_client_request_body_handler; @@ -3732,7 +3734,7 @@ ngx_http_v2_process_request_body(ngx_htt ngx_http_request_body_t *rb; ngx_http_core_loc_conf_t *clcf; - fc = r->connection; + fc = r->stream->fake_connection; rb = r->request_body; buf = rb->buf; @@ -3903,7 +3905,7 @@ ngx_http_v2_read_client_request_body_han { ngx_connection_t *fc; - fc = r->connection; + fc = r->stream->fake_connection; ngx_log_debug0(NGX_LOG_DEBUG_HTTP, fc->log, 0, "http2 read client request body handler"); @@ -3942,7 +3944,7 @@ ngx_http_v2_read_unbuffered_request_body ngx_http_core_loc_conf_t *clcf; stream = r->stream; - fc = r->connection; + fc = stream->fake_connection; if (fc->read->timedout) { if (stream->recv_window) { @@ -4042,7 +4044,7 @@ ngx_http_v2_terminate_stream(ngx_http_v2 stream->rst_sent = 1; stream->skip_data = 1; - fc = stream->request->connection; + fc = stream->fake_connection; fc->error = 1; rev = fc->read; @@ -4068,7 +4070,7 @@ ngx_http_v2_close_stream(ngx_http_v2_str "http2 close stream %ui, queued %ui, processing %ui", node->id, stream->queued, h2c->processing); - fc = stream->request->connection; + fc = stream->fake_connection; if (stream->queued) { fc->write->handler = ngx_http_v2_close_stream_handler; @@ -4302,7 +4304,6 @@ ngx_http_v2_finalize_connection(ngx_http ngx_uint_t i, size; ngx_event_t *ev; ngx_connection_t *c, *fc; - ngx_http_request_t *r; ngx_http_v2_node_t *node; ngx_http_v2_stream_t *stream; ngx_http_v2_srv_conf_t *h2scf; @@ -4344,9 +4345,7 @@ ngx_http_v2_finalize_connection(ngx_http stream->waiting = 0; - r = stream->request; - fc = r->connection; - + fc = stream->fake_connection; fc->error = 1; if (stream->queued) { @@ -4420,7 +4419,7 @@ ngx_http_v2_adjust_windows(ngx_http_v2_c if (stream->send_window > 0 && stream->exhausted) { stream->exhausted = 0; - wev = stream->request->connection->write; + wev = stream->fake_connection->write; wev->active = 0; wev->ready = 1; diff -r 24b0f9f4ebfa -r 64d12a65309e src/http/v2/ngx_http_v2.h --- a/src/http/v2/ngx_http_v2.h +++ b/src/http/v2/ngx_http_v2.h @@ -165,6 +165,8 @@ struct ngx_http_v2_node_s { struct ngx_http_v2_stream_s { + ngx_connection_t *fake_connection; + ngx_http_request_t *request; ngx_http_v2_connection_t *connection; ngx_http_v2_node_t *node; diff -r 24b0f9f4ebfa -r 64d12a65309e src/http/v2/ngx_http_v2_filter_module.c --- a/src/http/v2/ngx_http_v2_filter_module.c +++ b/src/http/v2/ngx_http_v2_filter_module.c @@ -173,7 +173,7 @@ ngx_http_v2_header_filter(ngx_http_reque return NGX_OK; } - fc = r->connection; + fc = r->stream->fake_connection; if (fc->error) { return NGX_ERROR; @@ -896,7 +896,7 @@ ngx_http_v2_create_headers_frame(ngx_htt cl->next = NULL; frame->last = cl; - ngx_log_debug3(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, + ngx_log_debug3(NGX_LOG_DEBUG_HTTP, stream->fake_connection->log, 0, "http2:%ui create HEADERS frame %p: len:%uz", stream->node->id, frame, frame->length); @@ -1175,7 +1175,7 @@ ngx_http_v2_filter_get_data_frame(ngx_ht flags = last->buf->last_buf ? NGX_HTTP_V2_END_STREAM_FLAG : 0; - ngx_log_debug4(NGX_LOG_DEBUG_HTTP, stream->request->connection->log, 0, + ngx_log_debug4(NGX_LOG_DEBUG_HTTP, stream->fake_connection->log, 0, "http2:%ui create DATA frame %p: len:%uz flags:%ui", stream->node->id, frame, len, (ngx_uint_t) flags); @@ -1457,11 +1457,8 @@ static ngx_inline void ngx_http_v2_handle_frame(ngx_http_v2_stream_t *stream, ngx_http_v2_out_frame_t *frame) { - ngx_http_request_t *r; - - r = stream->request; - - r->connection->sent += NGX_HTTP_V2_FRAME_HEADER_SIZE + frame->length; + stream->fake_connection->sent += NGX_HTTP_V2_FRAME_HEADER_SIZE + + frame->length; if (frame->fin) { stream->out_closed = 1; @@ -1485,7 +1482,7 @@ ngx_http_v2_handle_stream(ngx_http_v2_co return; } - fc = stream->request->connection; + fc = stream->fake_connection; if (!fc->error && stream->exhausted) { return; @@ -1561,7 +1558,7 @@ ngx_http_v2_filter_cleanup(void *data) stream->waiting = 0; - wev = stream->request->connection->write; + wev = stream->fake_connection->write; wev->active = 0; wev->ready = 1; _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel