diff options
author | 2015-07-30 15:29:49 -0700 | |
---|---|---|
committer | 2015-07-30 15:29:49 -0700 | |
commit | d1c003444c9d8f12efc455d208dae3209a61e9db (patch) | |
tree | 1bbfc6e657fdaee7f549bd5fd1c41de426972474 /src/core/transport | |
parent | c40060493d62f75c41dd9896ce68a3b2860f1180 (diff) |
Abort writes if a stream is cancelled
Diffstat (limited to 'src/core/transport')
-rw-r--r-- | src/core/transport/chttp2_transport.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c index 1ea4a82c16..f05ec99256 100644 --- a/src/core/transport/chttp2_transport.c +++ b/src/core/transport/chttp2_transport.c @@ -823,6 +823,12 @@ static void unlock_check_read_write_state(grpc_chttp2_transport *t) { stream_global); } else { stream_global->write_state = GRPC_WRITE_STATE_SENT_CLOSE; + if (stream_global->outgoing_sopb != NULL) { + grpc_sopb_reset(stream_global->outgoing_sopb); + stream_global->outgoing_sopb = NULL; + grpc_chttp2_schedule_closure(transport_global, + stream_global->send_done_closure, 1); + } stream_global->read_closed = 1; if (!stream_global->published_cancelled) { char buffer[GPR_LTOA_MIN_BUFSIZE]; |