Welcome! Log In Create A New Profile

Advanced

[PATCH] HTTP/2: add debug logging of control frames

Piotr Sikora via nginx-devel
April 03, 2017 11:14PM
# HG changeset patch
# User Piotr Sikora <piotrsikora@google.com>
# Date 1490516711 25200
# Sun Mar 26 01:25:11 2017 -0700
# Node ID 06d6418afe6e73604aea707ef9c5802f5bf27bf4
# Parent 22be63bf21edaa1b8ea916c7d8cd4e5fe4892061
HTTP/2: add debug logging of control frames.

Signed-off-by: Piotr Sikora <piotrsikora@google.com>

diff -r 22be63bf21ed -r 06d6418afe6e src/http/v2/ngx_http_v2.c
--- a/src/http/v2/ngx_http_v2.c
+++ b/src/http/v2/ngx_http_v2.c
@@ -1955,6 +1955,9 @@ ngx_http_v2_state_settings(ngx_http_v2_c
return ngx_http_v2_connection_error(h2c, NGX_HTTP_V2_SIZE_ERROR);
}

+ ngx_log_debug0(NGX_LOG_DEBUG_HTTP, h2c->connection->log, 0,
+ "http2 SETTINGS frame ack:1");
+
h2c->settings_ack = 1;

return ngx_http_v2_state_complete(h2c, pos, end);
@@ -1968,6 +1971,10 @@ ngx_http_v2_state_settings(ngx_http_v2_c
return ngx_http_v2_connection_error(h2c, NGX_HTTP_V2_SIZE_ERROR);
}

+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, h2c->connection->log, 0,
+ "http2 SETTINGS frame params:%uz",
+ h2c->state.length / NGX_HTTP_V2_SETTINGS_PARAM_SIZE);
+
ngx_http_v2_send_settings(h2c, 1);

return ngx_http_v2_state_settings_params(h2c, pos, end);
@@ -2004,6 +2011,10 @@ ngx_http_v2_state_settings_params(ngx_ht
NGX_HTTP_V2_FLOW_CTRL_ERROR);
}

+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, h2c->connection->log, 0,
+ "http2 SETTINGS frame INITIAL_WINDOW_SIZE:%ui",
+ value);
+
if (ngx_http_v2_adjust_windows(h2c, value - h2c->init_window)
!= NGX_OK)
{
@@ -2026,6 +2037,10 @@ ngx_http_v2_state_settings_params(ngx_ht
NGX_HTTP_V2_PROTOCOL_ERROR);
}

+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, h2c->connection->log, 0,
+ "http2 SETTINGS frame MAX_FRAME_SIZE:%ui",
+ value);
+
h2c->frame_size = value;
break;

@@ -2070,12 +2085,16 @@ ngx_http_v2_state_ping(ngx_http_v2_conne
}

ngx_log_debug1(NGX_LOG_DEBUG_HTTP, h2c->connection->log, 0,
- "http2 PING frame, flags: %ud", h2c->state.flags);
+ "http2 PING frame ack:%ud",
+ h2c->state.flags & NGX_HTTP_V2_ACK_FLAG ? 1 : 0);

if (h2c->state.flags & NGX_HTTP_V2_ACK_FLAG) {
return ngx_http_v2_state_skip(h2c, pos, end);
}

+ ngx_log_debug0(NGX_LOG_DEBUG_HTTP, h2c->connection->log, 0,
+ "http2 send PING frame ack:1");
+
frame = ngx_http_v2_get_frame(h2c, NGX_HTTP_V2_PING_SIZE,
NGX_HTTP_V2_PING_FRAME,
NGX_HTTP_V2_ACK_FLAG, 0);
@@ -2449,8 +2468,18 @@ ngx_http_v2_send_settings(ngx_http_v2_co
ngx_http_v2_srv_conf_t *h2scf;
ngx_http_v2_out_frame_t *frame;

- ngx_log_debug1(NGX_LOG_DEBUG_HTTP, h2c->connection->log, 0,
- "http2 send SETTINGS frame ack:%ui", ack);
+ if (ack) {
+ ngx_log_debug0(NGX_LOG_DEBUG_HTTP, h2c->connection->log, 0,
+ "http2 send SETTINGS frame ack:1");
+
+ len = 0;
+
+ } else {
+ ngx_log_debug0(NGX_LOG_DEBUG_HTTP, h2c->connection->log, 0,
+ "http2 send SETTINGS frame params:3");
+
+ len = NGX_HTTP_V2_SETTINGS_PARAM_SIZE * 3;
+ }

frame = ngx_palloc(h2c->pool, sizeof(ngx_http_v2_out_frame_t));
if (frame == NULL) {
@@ -2462,8 +2491,6 @@ ngx_http_v2_send_settings(ngx_http_v2_co
return NGX_ERROR;
}

- len = ack ? 0 : (sizeof(uint16_t) + sizeof(uint32_t)) * 3;
-
buf = ngx_create_temp_buf(h2c->pool, NGX_HTTP_V2_FRAME_HEADER_SIZE + len);
if (buf == NULL) {
return NGX_ERROR;
@@ -2494,15 +2521,27 @@ ngx_http_v2_send_settings(ngx_http_v2_co
h2scf = ngx_http_get_module_srv_conf(h2c->http_connection->conf_ctx,
ngx_http_v2_module);

+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, h2c->connection->log, 0,
+ "http2 send SETTINGS frame MAX_CONCURRENT_STREAMS:%ui",
+ h2scf->concurrent_streams);
+
buf->last = ngx_http_v2_write_uint16(buf->last,
NGX_HTTP_V2_MAX_STREAMS_SETTING);
buf->last = ngx_http_v2_write_uint32(buf->last,
h2scf->concurrent_streams);

+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, h2c->connection->log, 0,
+ "http2 send SETTINGS frame INITIAL_WINDOW_SIZE:%uz",
+ h2scf->preread_size);
+
buf->last = ngx_http_v2_write_uint16(buf->last,
NGX_HTTP_V2_INIT_WINDOW_SIZE_SETTING);
buf->last = ngx_http_v2_write_uint32(buf->last, h2scf->preread_size);

+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, h2c->connection->log, 0,
+ "http2 send SETTINGS frame MAX_FRAME_SIZE:%ud",
+ NGX_HTTP_V2_MAX_FRAME_SIZE);
+
buf->last = ngx_http_v2_write_uint16(buf->last,
NGX_HTTP_V2_MAX_FRAME_SIZE_SETTING);
buf->last = ngx_http_v2_write_uint32(buf->last,
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[PATCH] HTTP/2: add debug logging of control frames

Piotr Sikora via nginx-devel 588 April 03, 2017 11:14PM

Re: [PATCH] HTTP/2: add debug logging of control frames

Valentin V. Bartenev 305 April 06, 2017 10:32AM

Re: [PATCH] HTTP/2: add debug logging of control frames

Piotr Sikora via nginx-devel 252 April 07, 2017 05:44PM

Re: [PATCH] HTTP/2: add debug logging of control frames

Valentin V. Bartenev 282 April 17, 2017 02:58PM

Re: [PATCH] HTTP/2: add debug logging of control frames

Piotr Sikora via nginx-devel 284 April 24, 2017 07:04PM

Re: [PATCH] HTTP/2: add debug logging of control frames

Piotr Sikora via nginx-devel 328 May 30, 2017 05:22PM

Re: [PATCH] HTTP/2: add debug logging of control frames

Valentin V. Bartenev 211 June 08, 2017 02:32PM

Re: [PATCH] HTTP/2: add debug logging of control frames

Piotr Sikora via nginx-devel 240 June 19, 2017 10:30AM

[PATCH] HTTP/2: add debug logging of control frames

Piotr Sikora via nginx-devel 239 June 19, 2017 10:30AM

[PATCH] HTTP/2: add debug logging of control frames

Piotr Sikora via nginx-devel 403 April 07, 2017 06:10PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 270
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready