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}) }