aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/transport
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2015-07-30 15:29:49 -0700
committerGravatar Craig Tiller <ctiller@google.com>2015-07-30 15:29:49 -0700
commitd1c003444c9d8f12efc455d208dae3209a61e9db (patch)
tree1bbfc6e657fdaee7f549bd5fd1c41de426972474 /src/core/transport
parentc40060493d62f75c41dd9896ce68a3b2860f1180 (diff)
Abort writes if a stream is cancelled
Diffstat (limited to 'src/core/transport')
-rw-r--r--src/core/transport/chttp2_transport.c6
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];