diff options
author | Craig Tiller <craig.tiller@gmail.com> | 2015-05-01 12:46:27 -0700 |
---|---|---|
committer | Craig Tiller <craig.tiller@gmail.com> | 2015-05-01 12:46:27 -0700 |
commit | a77d3f646abef50f6716d3c2fcc3d8b287cf44b5 (patch) | |
tree | 7280e536e12f81adbef869c5e0b6b5b8af05a659 /src | |
parent | 87344c88d535c0cb080d75dc925af369035c87e3 (diff) | |
parent | 4db2954d1e78c9ecfd7843a7a9b87a3d9a583d32 (diff) |
Merge pull request #1394 from yang-g/bugfix
Fix flow control issue
Diffstat (limited to 'src')
-rw-r--r-- | src/core/transport/chttp2_transport.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c index 3ae693176e..0bee37c614 100644 --- a/src/core/transport/chttp2_transport.c +++ b/src/core/transport/chttp2_transport.c @@ -611,17 +611,19 @@ static int init_stream(grpc_transport *gt, grpc_stream *gs, if (!server_data) { lock(t); s->id = 0; + s->outgoing_window = 0; + s->incoming_window = 0; } else { /* already locked */ s->id = (gpr_uint32)(gpr_uintptr)server_data; + s->outgoing_window = + t->settings[PEER_SETTINGS][GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE]; + s->incoming_window = + t->settings[SENT_SETTINGS][GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE]; t->incoming_stream = s; grpc_chttp2_stream_map_add(&t->stream_map, s->id, s); } - s->outgoing_window = - t->settings[PEER_SETTINGS][GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE]; - s->incoming_window = - t->settings[SENT_SETTINGS][GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE]; s->incoming_deadline = gpr_inf_future; grpc_sopb_init(&s->writing_sopb); grpc_sopb_init(&s->callback_sopb); @@ -1017,6 +1019,10 @@ static void maybe_start_some_streams(transport *t) { GPR_ASSERT(s->id == 0); s->id = t->next_stream_id; t->next_stream_id += 2; + s->outgoing_window = + t->settings[PEER_SETTINGS][GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE]; + s->incoming_window = + t->settings[SENT_SETTINGS][GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE]; grpc_chttp2_stream_map_add(&t->stream_map, s->id, s); stream_list_join(t, s, WRITABLE); } |