Open bosh-3shape opened 3 months ago
Thank you for the great repro project!
This does appear to be a YARP issue where we're not flushing the response headers until we receive some content. Relevant section: https://github.com/microsoft/reverse-proxy/blob/8b53dac3d1a011a097883e9aa5eb504fe4c87426/src/ReverseProxy/Forwarder/HttpForwarder.cs#L269-L280
Describe the bug
The setup is the following: a gRPC server that is behind YARP, and a client that calls the server. The server has a gRPC bidirectional streaming method exposed. Before the messages are sent on this call, the client and the server have to perform the header exchange:
What I observe is that step (3) never happens, as the client never receives the headers from the server.
If the client calls the server directly (without YARP), then step (3) happens, and the call procceeds.
To Reproduce
I've implemented a minimal repro here: https://github.com/bosh-3shape/YarpGrpcHeadersRepro
Further technical details