diff options
Diffstat (limited to 'vendor/google.golang.org/grpc/metadata')
| -rw-r--r-- | vendor/google.golang.org/grpc/metadata/metadata.go | 31 | 
1 files changed, 18 insertions, 13 deletions
diff --git a/vendor/google.golang.org/grpc/metadata/metadata.go b/vendor/google.golang.org/grpc/metadata/metadata.go index a2cdcaf12..1e9485fd6 100644 --- a/vendor/google.golang.org/grpc/metadata/metadata.go +++ b/vendor/google.golang.org/grpc/metadata/metadata.go @@ -25,8 +25,14 @@ import (  	"context"  	"fmt"  	"strings" + +	"google.golang.org/grpc/internal"  ) +func init() { +	internal.FromOutgoingContextRaw = fromOutgoingContextRaw +} +  // DecodeKeyValue returns k, v, nil.  //  // Deprecated: use k and v directly instead. @@ -153,14 +159,16 @@ func Join(mds ...MD) MD {  type mdIncomingKey struct{}  type mdOutgoingKey struct{} -// NewIncomingContext creates a new context with incoming md attached. +// NewIncomingContext creates a new context with incoming md attached. md must +// not be modified after calling this function.  func NewIncomingContext(ctx context.Context, md MD) context.Context {  	return context.WithValue(ctx, mdIncomingKey{}, md)  }  // NewOutgoingContext creates a new context with outgoing md attached. If used  // in conjunction with AppendToOutgoingContext, NewOutgoingContext will -// overwrite any previously-appended metadata. +// overwrite any previously-appended metadata. md must not be modified after +// calling this function.  func NewOutgoingContext(ctx context.Context, md MD) context.Context {  	return context.WithValue(ctx, mdOutgoingKey{}, rawMD{md: md})  } @@ -203,7 +211,8 @@ func FromIncomingContext(ctx context.Context) (MD, bool) {  }  // ValueFromIncomingContext returns the metadata value corresponding to the metadata -// key from the incoming metadata if it exists. Key must be lower-case. +// key from the incoming metadata if it exists. Keys are matched in a case insensitive +// manner.  //  // # Experimental  // @@ -219,33 +228,29 @@ func ValueFromIncomingContext(ctx context.Context, key string) []string {  		return copyOf(v)  	}  	for k, v := range md { -		// We need to manually convert all keys to lower case, because MD is a -		// map, and there's no guarantee that the MD attached to the context is -		// created using our helper functions. -		if strings.ToLower(k) == key { +		// Case insenitive comparison: MD is a map, and there's no guarantee +		// that the MD attached to the context is created using our helper +		// functions. +		if strings.EqualFold(k, key) {  			return copyOf(v)  		}  	}  	return nil  } -// the returned slice must not be modified in place  func copyOf(v []string) []string {  	vals := make([]string, len(v))  	copy(vals, v)  	return vals  } -// FromOutgoingContextRaw returns the un-merged, intermediary contents of rawMD. +// fromOutgoingContextRaw returns the un-merged, intermediary contents of rawMD.  //  // Remember to perform strings.ToLower on the keys, for both the returned MD (MD  // is a map, there's no guarantee it's created using our helper functions) and  // the extra kv pairs (AppendToOutgoingContext doesn't turn them into  // lowercase). -// -// This is intended for gRPC-internal use ONLY. Users should use -// FromOutgoingContext instead. -func FromOutgoingContextRaw(ctx context.Context) (MD, [][]string, bool) { +func fromOutgoingContextRaw(ctx context.Context) (MD, [][]string, bool) {  	raw, ok := ctx.Value(mdOutgoingKey{}).(rawMD)  	if !ok {  		return nil, nil, false  | 
