From ac3c5847a1d3e827b3d27acbaa22a8bf83d5b927 Mon Sep 17 00:00:00 2001 From: iamqizhao Date: Mon, 18 Apr 2016 10:30:34 -0700 Subject: [PATCH 1/3] fix a couple of misuse of ctx introduced recently --- transport/http2_client.go | 8 ++++++-- transport/http2_server.go | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/transport/http2_client.go b/transport/http2_client.go index 8fc6ed0d0..ded4eeec4 100644 --- a/transport/http2_client.go +++ b/transport/http2_client.go @@ -233,8 +233,10 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea if dl, ok := ctx.Deadline(); ok { timeout = dl.Sub(time.Now()) } - if err := ctx.Err(); err != nil { + select { + case ctx.Done(): return nil, ContextErr(err) + default: } pr := &peer.Peer{ Addr: t.conn.RemoteAddr(), @@ -516,13 +518,15 @@ func (t *http2Client) Write(s *Stream, data []byte, opts *Options) error { } return err } - if s.ctx.Err() != nil { + select { + case s.ctx.Done(): t.sendQuotaPool.add(len(p)) if t.framer.adjustNumWriters(-1) == 0 { t.controlBuf.put(&flushIO{}) } t.writableChan <- 0 return ContextErr(s.ctx.Err()) + default: } if r.Len() == 0 && t.framer.adjustNumWriters(0) == 1 { // Do a force flush iff this is last frame for the entire gRPC message diff --git a/transport/http2_server.go b/transport/http2_server.go index df918d8dc..38521a0df 100644 --- a/transport/http2_server.go +++ b/transport/http2_server.go @@ -600,13 +600,15 @@ func (t *http2Server) Write(s *Stream, data []byte, opts *Options) error { } return err } - if s.ctx.Err() != nil { + select { + case s.ctx.Done(): t.sendQuotaPool.add(ps) if t.framer.adjustNumWriters(-1) == 0 { t.controlBuf.put(&flushIO{}) } t.writableChan <- 0 return ContextErr(s.ctx.Err()) + default: } var forceFlush bool if r.Len() == 0 && t.framer.adjustNumWriters(0) == 1 && !opts.Last { From ee96f6b34889deef68753eacab92ef4afb41de59 Mon Sep 17 00:00:00 2001 From: iamqizhao Date: Mon, 18 Apr 2016 10:37:34 -0700 Subject: [PATCH 2/3] Fix a typo --- transport/http2_client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/transport/http2_client.go b/transport/http2_client.go index ded4eeec4..726cb8fef 100644 --- a/transport/http2_client.go +++ b/transport/http2_client.go @@ -235,7 +235,7 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea } select { case ctx.Done(): - return nil, ContextErr(err) + return nil, ContextErr(ctx.Err()) default: } pr := &peer.Peer{ From 25dd388f9a5f61a32193fef98d28621c12c5f033 Mon Sep 17 00:00:00 2001 From: iamqizhao Date: Mon, 18 Apr 2016 10:42:21 -0700 Subject: [PATCH 3/3] more typo --- transport/http2_client.go | 4 ++-- transport/http2_server.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/transport/http2_client.go b/transport/http2_client.go index 726cb8fef..258695b2b 100644 --- a/transport/http2_client.go +++ b/transport/http2_client.go @@ -234,7 +234,7 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea timeout = dl.Sub(time.Now()) } select { - case ctx.Done(): + case <-ctx.Done(): return nil, ContextErr(ctx.Err()) default: } @@ -519,7 +519,7 @@ func (t *http2Client) Write(s *Stream, data []byte, opts *Options) error { return err } select { - case s.ctx.Done(): + case <-s.ctx.Done(): t.sendQuotaPool.add(len(p)) if t.framer.adjustNumWriters(-1) == 0 { t.controlBuf.put(&flushIO{}) diff --git a/transport/http2_server.go b/transport/http2_server.go index 38521a0df..6f233d9dc 100644 --- a/transport/http2_server.go +++ b/transport/http2_server.go @@ -601,7 +601,7 @@ func (t *http2Server) Write(s *Stream, data []byte, opts *Options) error { return err } select { - case s.ctx.Done(): + case <-s.ctx.Done(): t.sendQuotaPool.add(ps) if t.framer.adjustNumWriters(-1) == 0 { t.controlBuf.put(&flushIO{})