diff options
Diffstat (limited to 'src/core/transport')
-rw-r--r-- | src/core/transport/chttp2_transport.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c index 8b1fb78917..d15962e5c5 100644 --- a/src/core/transport/chttp2_transport.c +++ b/src/core/transport/chttp2_transport.c @@ -478,9 +478,6 @@ static void init_transport(transport *t, grpc_transport_setup_callback setup, ref_transport(t); gpr_mu_unlock(&t->mu); - ref_transport(t); - recv_data(t, slices, nslices, GRPC_ENDPOINT_CB_OK); - sr = setup(arg, &t->base, t->metadata_context); lock(t); @@ -488,6 +485,10 @@ static void init_transport(transport *t, grpc_transport_setup_callback setup, t->cb_user_data = sr.user_data; t->calling_back = 0; unlock(t); + + ref_transport(t); + recv_data(t, slices, nslices, GRPC_ENDPOINT_CB_OK); + unref_transport(t); } @@ -1013,6 +1014,8 @@ static void cancel_stream_inner(transport *t, stream *s, gpr_uint32 id, int had_outgoing; char buffer[GPR_LTOA_MIN_BUFSIZE]; + gpr_log(GPR_DEBUG, "cancel %d", id); + if (s) { /* clear out any unreported input & output: nobody cares anymore */ had_outgoing = s->outgoing_sopb.nops != 0; |