From 63de54e02b3b5dd442638f3596128283e9724fe6 Mon Sep 17 00:00:00 2001 From: iamqizhao Date: Mon, 30 Mar 2015 18:00:11 -0700 Subject: [PATCH 1/3] fix a bug --- transport/http2_client.go | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/transport/http2_client.go b/transport/http2_client.go index 11515b68..ca902f80 100644 --- a/transport/http2_client.go +++ b/transport/http2_client.go @@ -198,18 +198,6 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea return nil, ContextErr(context.DeadlineExceeded) } } - var authData map[string]string - for _, c := range t.authCreds { - authData, err = c.GetRequestMetadata(ctx) - select { - case <-ctx.Done(): - return nil, ContextErr(ctx.Err()) - default: - } - if err != nil { - return nil, StreamErrorf(codes.InvalidArgument, "transport: %v", err) - } - } if _, err := wait(ctx, t.shutdownChan, t.writableChan); err != nil { return nil, err } @@ -226,8 +214,13 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea if timeout > 0 { t.hEnc.WriteField(hpack.HeaderField{Name: "grpc-timeout", Value: timeoutEncode(timeout)}) } - for k, v := range authData { - t.hEnc.WriteField(hpack.HeaderField{Name: k, Value: v}) + for _, c := range t.authCreds { + if authData, err := c.GetRequestMetadata(ctx); err != nil { + return nil, StreamErrorf(codes.InvalidArgument, "transport: %v", err) + } + for k, v := range authData { + t.hEnc.WriteField(hpack.HeaderField{Name: k, Value: v}) + } } var ( hasMD bool From 6bd3958840fdb4d76c7c513bd93e1ff79f83295b Mon Sep 17 00:00:00 2001 From: iamqizhao Date: Mon, 30 Mar 2015 18:14:56 -0700 Subject: [PATCH 2/3] another change --- transport/http2_client.go | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/transport/http2_client.go b/transport/http2_client.go index ca902f80..d710b6f7 100644 --- a/transport/http2_client.go +++ b/transport/http2_client.go @@ -198,6 +198,19 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea return nil, ContextErr(context.DeadlineExceeded) } } + var authData map[string]string + for _, c := range t.authCreds { + data, err := c.GetRequestMetadata(ctx) + if err != nil { + return nil, StreamErrorf(codes.InvalidArgument, "transport: %v", err) + } + if authData == nil && data != nil { + authData = make(map[string]string) + } + for k, v := range data { + authData[k] = v + } + } if _, err := wait(ctx, t.shutdownChan, t.writableChan); err != nil { return nil, err } @@ -214,13 +227,8 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea if timeout > 0 { t.hEnc.WriteField(hpack.HeaderField{Name: "grpc-timeout", Value: timeoutEncode(timeout)}) } - for _, c := range t.authCreds { - if authData, err := c.GetRequestMetadata(ctx); err != nil { - return nil, StreamErrorf(codes.InvalidArgument, "transport: %v", err) - } - for k, v := range authData { - t.hEnc.WriteField(hpack.HeaderField{Name: k, Value: v}) - } + for k, v := range authData { + t.hEnc.WriteField(hpack.HeaderField{Name: k, Value: v}) } var ( hasMD bool From 945fb3f301d22b80aa8336745e121fba55b5d515 Mon Sep 17 00:00:00 2001 From: iamqizhao Date: Mon, 30 Mar 2015 18:25:29 -0700 Subject: [PATCH 3/3] address some comments --- transport/http2_client.go | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/transport/http2_client.go b/transport/http2_client.go index d710b6f7..ede63cda 100644 --- a/transport/http2_client.go +++ b/transport/http2_client.go @@ -198,15 +198,12 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea return nil, ContextErr(context.DeadlineExceeded) } } - var authData map[string]string + authData := make(map[string]string) for _, c := range t.authCreds { data, err := c.GetRequestMetadata(ctx) if err != nil { return nil, StreamErrorf(codes.InvalidArgument, "transport: %v", err) } - if authData == nil && data != nil { - authData = make(map[string]string) - } for k, v := range data { authData[k] = v }