From c9f0b89a96ecad493b145c0d475caf79f9787eea Mon Sep 17 00:00:00 2001 From: iamqizhao Date: Fri, 15 Jul 2016 14:53:49 -0700 Subject: [PATCH] clean up underlying footprint when Stream.Done() is read --- stream.go | 3 ++- transport/http2_client.go | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/stream.go b/stream.go index d5b82a4b..89e4ec8a 100644 --- a/stream.go +++ b/stream.go @@ -190,7 +190,8 @@ func NewClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth case <-t.Error(): // Incur transport error, simply exit. case <-s.Done(): - // Simply exit. Leave the next I/O op to do cleanup. + cs.finish(err) + cs.closeTransportStream(nil) case <-s.Context().Done(): err := s.Context().Err() cs.finish(err) diff --git a/transport/http2_client.go b/transport/http2_client.go index f4fad840..3a0fdac0 100644 --- a/transport/http2_client.go +++ b/transport/http2_client.go @@ -692,6 +692,8 @@ func (t *http2Client) handleRSTStream(f *http2.RSTStreamFrame) { grpclog.Println("transport: http2Client.handleRSTStream found no mapped gRPC status for the received http2 error ", f.ErrCode) s.statusCode = codes.Unknown } + //grpclog.Println("DEBUG handleRSTStram: ", f, " | ", f.ErrCode) + close(s.done) s.mu.Unlock() s.write(recvMsg{err: io.EOF}) }