zeroshade commented on a change in pull request #10297:
URL: https://github.com/apache/arrow/pull/10297#discussion_r630587448
##########
File path: go/arrow/flight/client_auth.go
##########
@@ -65,7 +65,7 @@ func createClientAuthUnaryInterceptor(auth ClientAuthHandler)
grpc.UnaryClientIn
return status.Errorf(codes.Unauthenticated, "error
retrieving token: %s", err)
}
- return invoker(metadata.NewOutgoingContext(ctx,
metadata.Pairs(grpcAuthHeader, tok)), method, req, reply, cc, opts...)
Review comment:
the `ctx` variable passed in is the "context" that was created by the
caller and passed. The user could add metadata (ie: headers) to the context by
calling `NewOutgoingContext`. The problem is that by calling
`NewOutgoingContext` here, we're dropping any metadata they had stuck in the
context and replacing it with the auth metadata. So they're gonna lose any
extra headers/metadata a caller intended on passing with the request.
By calling `AppendToOutgoingContext` if there is no metadata it'll create
some, but if there already is metadata in the context that was placed there by
the caller, we're just gonna add the authentication header to the metadata,
preserving the caller's metadata instead of dropping it completely.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]