in grpc/server/responseheader/responseheader.go [21:40]
func copyMetadata(ctx context.Context, metadataToHeader map[string]string) error {
md, ok := metadata.FromIncomingContext(ctx)
if !ok {
return nil
}
// Filter and set the allowed metadata as response headers
filteredMD := metadata.New(nil)
for key := range metadataToHeader {
if values, exists := md[key]; exists {
filteredMD.Set(key, values...)
}
}
// append filteredMD to any existing headers, does not replace the entire header metadata
// if setHeader called multiple times, all the provided metadata will be merged
if err := grpc.SetHeader(ctx, filteredMD); err != nil {
return err
}
return nil
}