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]


Reply via email to