aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/transport/chttp2/writing.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/transport/chttp2/writing.c')
-rw-r--r--src/core/transport/chttp2/writing.c22
1 files changed, 7 insertions, 15 deletions
diff --git a/src/core/transport/chttp2/writing.c b/src/core/transport/chttp2/writing.c
index db6715b43a..18f4bfbc77 100644
--- a/src/core/transport/chttp2/writing.c
+++ b/src/core/transport/chttp2/writing.c
@@ -163,7 +163,8 @@ int grpc_chttp2_unlocking_check_writes(
}
void grpc_chttp2_perform_writes(
- grpc_chttp2_transport_writing *transport_writing, grpc_endpoint *endpoint) {
+ grpc_chttp2_transport_writing *transport_writing, grpc_endpoint *endpoint,
+ grpc_call_list *call_list) {
GPR_ASSERT(transport_writing->outbuf.count > 0 ||
grpc_chttp2_list_have_writing_streams(transport_writing));
@@ -172,17 +173,8 @@ void grpc_chttp2_perform_writes(
GPR_ASSERT(transport_writing->outbuf.count > 0);
GPR_ASSERT(endpoint);
- switch (grpc_endpoint_write(endpoint, &transport_writing->outbuf,
- &transport_writing->done_cb)) {
- case GRPC_ENDPOINT_DONE:
- grpc_chttp2_terminate_writing(transport_writing, 1);
- break;
- case GRPC_ENDPOINT_ERROR:
- grpc_chttp2_terminate_writing(transport_writing, 0);
- break;
- case GRPC_ENDPOINT_PENDING:
- break;
- }
+ grpc_endpoint_write(endpoint, &transport_writing->outbuf,
+ &transport_writing->done_cb, call_list);
}
static void finalize_outbuf(grpc_chttp2_transport_writing *transport_writing) {
@@ -220,7 +212,8 @@ static void finalize_outbuf(grpc_chttp2_transport_writing *transport_writing) {
void grpc_chttp2_cleanup_writing(
grpc_chttp2_transport_global *transport_global,
- grpc_chttp2_transport_writing *transport_writing) {
+ grpc_chttp2_transport_writing *transport_writing,
+ grpc_call_list *call_list) {
grpc_chttp2_stream_writing *stream_writing;
grpc_chttp2_stream_global *stream_global;
@@ -238,8 +231,7 @@ void grpc_chttp2_cleanup_writing(
stream_global->outgoing_sopb->nops == 0) {
GPR_ASSERT(stream_global->write_state != GRPC_WRITE_STATE_QUEUED_CLOSE);
stream_global->outgoing_sopb = NULL;
- grpc_call_list_add(&transport_global->run_at_unlock,
- stream_global->send_done_closure, 1);
+ grpc_call_list_add(call_list, stream_global->send_done_closure, 1);
}
}
stream_global->writing_now = 0;