|
|
|
@ -1426,13 +1426,13 @@ static void close_from_api(grpc_exec_ctx *exec_ctx, |
|
|
|
|
|
|
|
|
|
GPR_ASSERT(status >= 0 && (int)status < 100); |
|
|
|
|
|
|
|
|
|
GPR_ASSERT(stream_global->id != 0); |
|
|
|
|
|
|
|
|
|
if (stream_global->id != 0 && !transport_global->is_client) { |
|
|
|
|
/* Hand roll a header block.
|
|
|
|
|
This is unnecessarily ugly - at some point we should find a more elegant |
|
|
|
|
solution. |
|
|
|
|
It's complicated by the fact that our send machinery would be dead by the |
|
|
|
|
time we got around to sending this, so instead we ignore HPACK compression |
|
|
|
|
time we got around to sending this, so instead we ignore HPACK |
|
|
|
|
compression |
|
|
|
|
and just write the uncompressed bytes onto the wire. */ |
|
|
|
|
status_hdr = gpr_slice_malloc(15 + (status >= 10)); |
|
|
|
|
p = GPR_SLICE_START_PTR(status_hdr); |
|
|
|
@ -1513,6 +1513,8 @@ static void close_from_api(grpc_exec_ctx *exec_ctx, |
|
|
|
|
if (optional_message) { |
|
|
|
|
gpr_slice_ref(*optional_message); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
grpc_chttp2_fake_status(exec_ctx, transport_global, stream_global, status, |
|
|
|
|
optional_message); |
|
|
|
|
grpc_chttp2_mark_stream_closed(exec_ctx, transport_global, stream_global, 1, |
|
|
|
|