diff options
author | ctiller <ctiller@google.com> | 2014-12-07 15:09:10 -0800 |
---|---|---|
committer | Nicolas Noble <nnoble@google.com> | 2014-12-08 18:50:12 -0800 |
commit | 493fbcc2afd232faa93e8f294b6f1b17a6d54335 (patch) | |
tree | 4d2880271d4e07c687844ef76560e0835a53fded /src/core/transport/chttp2/frame_settings.c | |
parent | ec63b8e926058d61bc02d533f8a7beaaf470da13 (diff) |
Flow Control Fixes.
- Fix default window size
- Allow force-sending specific http2 settings
- Force send default window size always on connection (to avoid []
- Default to using a larger connection window (but keep the per-stream limit small)
- Initialize window sizes per the settings frame received
- Be more aggressive in updating flow control windows (send at 1/4 usage, not 1/2 usage)
Change on 2014/12/07 by ctiller <ctiller@google.com>
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=81534395
Diffstat (limited to 'src/core/transport/chttp2/frame_settings.c')
-rw-r--r-- | src/core/transport/chttp2/frame_settings.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/core/transport/chttp2/frame_settings.c b/src/core/transport/chttp2/frame_settings.c index 488b96a728..d8bc492870 100644 --- a/src/core/transport/chttp2/frame_settings.c +++ b/src/core/transport/chttp2/frame_settings.c @@ -71,21 +71,21 @@ static gpr_uint8 *fill_header(gpr_uint8 *out, gpr_uint32 length, } gpr_slice grpc_chttp2_settings_create(gpr_uint32 *old, const gpr_uint32 *new, - size_t count) { + gpr_uint32 force_mask, size_t count) { size_t i; size_t n = 0; gpr_slice output; gpr_uint8 *p; for (i = 0; i < count; i++) { - n += (new[i] != old[i]); + n += (new[i] != old[i] || (force_mask & (1 << i)) != 0); } output = gpr_slice_malloc(9 + 6 * n); p = fill_header(GPR_SLICE_START_PTR(output), 6 * n, 0); for (i = 0; i < count; i++) { - if (new[i] != old[i]) { + if (new[i] != old[i] || (force_mask & (1 << i)) != 0) { GPR_ASSERT(i); *p++ = i >> 8; *p++ = i; @@ -217,6 +217,8 @@ grpc_chttp2_parse_error grpc_chttp2_settings_parser_parse( } } parser->incoming_settings[parser->id] = parser->value; + gpr_log(GPR_DEBUG, "CHTTP2: got setting %d = %d", parser->id, + parser->value); } else { gpr_log(GPR_ERROR, "CHTTP2: Ignoring unknown setting %d (value %d)", parser->id, parser->value); |